US20030200491A1 - Method for verifying and improving run-time of a memory test - Google Patents
Method for verifying and improving run-time of a memory test Download PDFInfo
- Publication number
- US20030200491A1 US20030200491A1 US10/453,368 US45336803A US2003200491A1 US 20030200491 A1 US20030200491 A1 US 20030200491A1 US 45336803 A US45336803 A US 45336803A US 2003200491 A1 US2003200491 A1 US 2003200491A1
- Authority
- US
- United States
- Prior art keywords
- test
- operations
- simulator
- programming language
- error message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 231
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 title claims abstract description 35
- 238000012795 verification Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims 2
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 241000287828 Gallus gallus Species 0.000 description 1
- 235000001560 Prosopis chilensis Nutrition 0.000 description 1
- 240000007909 Prosopis juliflora Species 0.000 description 1
- 235000014460 Prosopis juliflora var juliflora Nutrition 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 210000003462 vein Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C29/56004—Pattern generation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/54—Arrangements for designing test circuits, e.g. design for test [DFT] tools
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
- G11C29/56012—Timing aspects, clock generation, synchronisation
Definitions
- DRAMs Dynamic Random Access Memories
- ICs integrated circuits
- Integrated circuits implementing memory devices must be reliable. Accordingly, memory devices have been tested since their first manufacture. Very early in the history of memory device testing, specialized equipment and automated test routines were developed to improve testing efficiency. As the capacity and capabilities of memory devices increased, a broad range of tests were automated. Different memory device manufacturers prescribed different testing routines. Test equipment is typically custom and memory device testing routines were written specific to the custom test equipment.
- Tests for memory devices may be conveniently divided into two categories; “test vectors,” and “algorithmic patterns.”
- a test vector typically consists of a linear set of operations to be performed.
- a test vector is often written in lower level language like assembly code.
- Test vectors access one or more memory device components and directly test their functionality over a range of common and end cases. For example, a write buffer might be run through a series of read/write sequences to verify correct operation.
- An algorithmic pattern typically consists of a program written in a higher level language which better supports looping and branching constructs for the memory device test.
- algorithmic patterns are written in a language that looks like a cross between microcode and assembly language. Such “languages” provide a richer set of control commands and expressions.
- algorithmic patterns tend to generate some failing side-effects within the test equipment. For example, dedicated hardware registers in the test equipment may become corrupted with invalid data during the generation of complicated test patterns.
- algorithmic patterns remain a mainstay of memory device test protocols. This is not surprising given the great number of memory locations which must be tested in contemporary memory devices. The practical implementation of a test which repeatedly writes data patterns to every location in a memory device requires some sort of looping operation. A set of linear test vectors sufficient to test the full storage capacity of contemporary memory deices would be impossibly long.
- a “test” consists of one or more test vectors and/or one or more algorithmic patterns.
- a test writer In creating a test, a test writer must define a sequence of operations which store and retrieve data to/from the memory device in accordance with certain “operating constraints.” Operating constraints take many forms including state-based and timing-based constraints, as well as other constraints which govern the proper operation of the memory device. (Attempting to CAS a bank of memory before it has been properly RASed in one example of a state-based constraint being violated. Attempting to CAS a memory bank too soon after it was RASed is an example of a timing constraint being violated). The operation of early memory devices was simple and characterized by relatively few constraints. As memory devices have increased in complexity, a greater number of operating constraints have arisen. These constraints must be observed and accounted for during the definition and creation of a test.
- Contemporary memory devices allow multiple transactions to handled simultaneously. Compared to their predecessors, contemporary memory devices have an increased number of operating constraints which must be obeyed during a sequence of memory system operations. Further, the use of packets to exchange control/address information and data greatly expands the number of constraints which must be obeyed during the definition of a memory device test protocol. Not only does the number of constraints (or rules) increase for each individual transaction defined within the test protocol, but also the number of interactions between the various rules increases as multiple concurrent transactions are performed to fully test the capabilities of the memory device.
- the test writer is left in doubt as to whether the device failed on its own accord or whether the test is bad 6 .
- test generation thus relies on assumption and “trial-and-error” tactics to arrive at a test presumed to be good. Further, each new test must be verified against a number of different conditions, such as temperature, data state, power level, etc.
- the process of test design is lengthy and fraught with doubt. In fact, errors may enter the test design process during any one of steps 2 , 5 , 6 , 7 and 9 in the exemplary process shown in FIG. 1.
- a timing constraint such as the minimum period between RAS-to-CAS (tRCD)
- tRCD the minimum period between RAS-to-CAS
- the present invention provides a method by which a test writer may determine whether a proposed test violates any operating constraint for the memory device being tested.
- a simulator for a collection of one or more memory devices is developed using a parameter list covering all relevant constraints.
- a test is typically defined by a sequence of time-ordered operations. This time-ordered sequence is passed through the simulator to verify that it adheres to the operating constraints.
- Constraint violations are indicated by error messages.
- the error messages may offer suggested fixes, such as timing adjustments required to place the sequence of operations in compliance with the constraints.
- the present invention provides a “packer” function.
- a verified test may be passed through the packer to reduce its run-time in relation to the given constraints.
- the present invention further provides methods for addressing the issue of programming language translation. Recognizing that the simulator is compatible with one programming language while a custom tester is compatible with another programming language, the present invention allows translation from one programming language to the other. In such cases, a test may be written in a tester compatible language and translated before verification in the simulator, or the test may be written in a simulator compatible language and translated after verification and run-time reduction.
- FIG. 1 is a flowchart illustrating a conventional method for generating a memory device test
- FIG. 2 is a flowchart illustrating a method of generating and verifying a memory device test according to one aspect of the present invention.
- FIG. 3 is a flowchart illustrating a method of generating and verifying a memory device test according to another aspect of the present invention.
- the terms “optimize,” optimizing,” “minimize,” “minimizing,” and their like are used to describe the effect of the present invention. These are relative terms in the sense that the present invention, at least in one aspect, is capable of significantly reducing the run-time of a test.
- any run-time reduction realized by the present invention is made in relation to a particular set of system constraints. Change the constraints and the run-time reduction realized may change as well.
- the foregoing terms should not be limited to absolute definitions of the minimum, or the optimal solution. Rather, “optimize” should, for example, be read as “further optimize, given the existing set of constraints.” For the sake of clarity, however, such wordier characterizations are omitted in favor of the simpler terms noted.
- the exemplary embodiments which follow are described in the context of a high-speed memory system which uses packetized control/address and data exchanges between a memory controller and one or more memory devices via a communications channel. That is, the test(s) generated, verified and run-time optimized by the present invention have particular application to at least contemporary memory systems like those designed by Rambus. Inc. of Mountain View, Calif.
- the Rambus DRAM (RDRAM) and its application in high-speed memory systems are well documented in available technical literature. While the present invention has been developed in relation to the Rambus memory architecture, it has much broader application. In fact, any test directed to a memory having a complex set of constraints will benefit from the dictates and teaching of the present invention.
- memory device test(s) is used throughout to broadly denote a test which exercises not only the internal functionality and storage capabilities of a memory device or a collection of memory devices (such as a module), but also the ability of the memory device or module to communicate with an external memory controller.
- “testing” a memory device connotes all aspects of transferring control/address information and data to and from the memory device, as well as storing data and retrieving data from the memory device.
- the behavior of a memory device or a memory module comprising one or more memory devices is simulated.
- the simulator is event-driven and directly models the behavior of one or memory devices or modules on a communications channel.
- the test writer provides a parameter file to the simulator that describes the architectural and timing characteristics of the memory device or module being simulated.
- the parameter file defines the operating constraints specified for the memory device.
- a time-ordered sequence of memory device operations are also input into the simulator.
- This set of operations is the test as first generated. It defines one or more vectors and/or algorithmic operations designed to exercise memory device functionality and storage capabilities.
- the present invention receives both the parameter file and the set of operations in text format which is easily read and understood. Thus, a familiarity with cryptic assembly languages is not a prerequisite to understanding and contributing to the test generation process facilitated by the present invention.
- the simulator runs the set of operations against the set of constraints defined by the parameter file. If the list of operations violates a constraint, the simulator provides an error message.
- the error message is typically provided on a display screen associated with a computer system running the simulator. Errors are preferably identified in sequence, since the simulator will typically traverse the set of operations in a time-ordered sequence. Sequential error identification allows the test writer to verify early operations which may impact later operations in the test.
- error messages need not be sequentially related to a time-ordered set of operations.
- some set of operations may include “JUMP” or “GOTO” branching operations which are implicated by a number of conditions. When executed, these operations may essentially re-order the set of operations according to the conditions.
- Error messages may include a variable level of user feedback depending on the desired sophistication of the simulator. State-based error messages will communicate the state or memory device resource in conflict. State-based error messages may also identify a suggested state adjustment which will overcome the identified violation. Time-based error messages will communicate the timing constraint being violated. Time-based error messages may also identify a suggested timing adjustment which will overcome the identified violation.
- the present invention provides a packer, i.e., a function which temporally “packs” the operations as tightly as possible given the current set of constraints.
- the packer accepts the time-ordered sequence of operations and the parameter file as inputs.
- the packer then iteratively calls the simulator to produce a version of the time-ordered sequence which minimizes the time allocated between different operations.
- no attempt is made to re-order the sequence of operations.
- re-ordering may be performed or suggested to the user.
- write buffer side effects where present, are maintained between unpacked and packed versions of the operations sequence. For example, if the unpacked sequence of operations calls for a write buffer to be cleared before the next operation, the packed sequence of operations maintains this requirement.
- packer While the application of packer to a test offers significant benefit to test writers, and while much of this benefit may derived in the automated output of the packer function, it should be recognized that the expansive breadth of possible tests preclude a trivial “one-size” fits all approach to test verification and optimization.
- the effective application of packer to some algorithmic tests comprising complex looping functions is non-trivial.
- Loop function annotations i.e., comments written with the code implementing the loop function, might be necessary for packer to determine “pre-optimization” the structure of the loop. In fact, restrictions may necessarily be placed on the structure of loops in a test.
- the present invention may be used to effectively verify and optimize such algorithmic tests by providing feedback to hand-alter the test, rather than the automated method described above.
- the present invention recognizes that some tests can be very long, and involve so many protocol operations that full simulation is impractical. Fortunately, many of these very long tests incorporate a unique test routine (or test kernel) which is repeated at great length. For such tests, the present invention may be used to verify and optimize the test kernel and extrapolate the resulting feedback to alter the entire test.
- test hardware may be used to reduce the test verification and/or run-time optimizing time.
- the present invention effectively addresses “translation” issues while providing the simulator and packer functions to the test writer.
- the simulator is written in a high level language like “C” on a UNIX based platform.
- a standard tool set or threads package such as the CSIM17 software library offered by Mesquite SoftwareTM, may be used to write the simulator.
- the simulator may be written to test memory devices on an individual basis, in groups (such as modules), and/or to test a channel fully populated channel with memory modules.
- the packer function is presently implemented as a “Perl script,” a well known UNIX programming language.
- FIG. 2 is a flowchart illustrating use of the simulator and packer functions of the present invention to generate and verify a memory device test.
- a test Once a test is created 10 it may need to be translated from a tester-compatible language into a simulator/packer compatible language 11 . In other words, the test must conform to the simulator's input format. Since the simulator is written in a higher level language, tester compatible language conversion, if necessary, is readily accomplished.
- FIG. 3 illustrates another method by which the simulator and packer of the present invention may be used to generate and verify a memory device test.
- the test is first written in a simulator compatible language 20 without regard to the ultimate language or format used by the tester. This is at odds with the first approach discussed above which assumes an existing test written in tester compatible language.
- the front end translations required in the first approach are avoided.
- the first approach requires that the test be modified when error(s) are found in the tester language. This modification will take place in the tester compatible language.
- translation between the two programming languages must take place repeatedly as the test is run iteratively through the simulator.
- the second approach does not require this repeated programming language translation as part of the iterative test generation and verification process.
- the present invention solves the problems inherent in the conventional method for generating memory device tests. Operating constraints are observed and automatically checked during the test generation. Resulting tests are known to be “good” in relation to actual constraints specified for the memory device. In contrast, the tests resulting from the conventional process are only known to be good in relation to some set of selected memory devices. When memory devices fail the conventional test, the tester is left to question whether the problem resides with the test or the new set of memory devices.
- test writer may write an entirely new suite of tests, re-write selected tests that have become outdated in view of the new memory device(s), or merely add one or more new tests to an existing suite of tests which are specifically directed to the expanded functionality of the new memory device(s). Since tests may be written in a higher level language, test generation is efficient.
- tests which conform to all memory device constraints may be optimized in their run-time by the present invention's packer function.
- Test writers need not struggle to efficiently time a sequence of operations under development. Rather, operations may be spaced with such extra time as is required to allow any combination of operations to run. Subsequently, packer will squeeze the sequence of operations down to its optimal run time.
- test vectors and algorithmic patterns are often written in cryptic assembly code. It is often difficult to tell how much time passes, or even what operation is being performed in the tests written in such languages.
- the definition and expression of the simulator and packer of the present invention may be had in a higher level language.
- the test writer may create a program which is very readable. Once written, verified, and run-time optimized, the test may be translated by a separate piece of code into a tester compatible language.
- the input format to the simulator may be readily modeled in accordance with the packet commands used in a memory system incorporating the memory devices to be tested. That is, assuming an existing command format or structure between a memory controller and a memory device, this format may readily serve as the basis for the simulator's input format.
- the present invention has been described in relation to several examples. These are, however, merely teaching examples. The examples are drawn to individual memory devices and collections or groups of memory devices susceptible to the benefits of the present invention. However, the present invention may be used to verify and/or run-time optimize a test for any “memory.” The physical form or architecture of the memory being tested is not a limiting factor in the application of the present invention, so long as an accurate simulator can be developed for the memory.
Landscapes
- Tests Of Electronic Circuits (AREA)
Abstract
Description
- Memory devices, including Dynamic Random Access Memories (DRAMs), are implemented as integrated circuits (ICs). The decreased size, increased storage capacity, increased operating speed, and expanded capabilities of memory device ICs have revolutionized computer systems, telecommunications equipment and consumer electronics. However, these attributes have also created a number of technical challenges. Testing is one such challenge.
- Integrated circuits implementing memory devices must be reliable. Accordingly, memory devices have been tested since their first manufacture. Very early in the history of memory device testing, specialized equipment and automated test routines were developed to improve testing efficiency. As the capacity and capabilities of memory devices increased, a broad range of tests were automated. Different memory device manufacturers prescribed different testing routines. Test equipment is typically custom and memory device testing routines were written specific to the custom test equipment.
- Tests for memory devices may be conveniently divided into two categories; “test vectors,” and “algorithmic patterns.” A test vector typically consists of a linear set of operations to be performed. A test vector is often written in lower level language like assembly code. Test vectors access one or more memory device components and directly test their functionality over a range of common and end cases. For example, a write buffer might be run through a series of read/write sequences to verify correct operation.
- An algorithmic pattern typically consists of a program written in a higher level language which better supports looping and branching constructs for the memory device test. In many conventional implementations, algorithmic patterns are written in a language that looks like a cross between microcode and assembly language. Such “languages” provide a richer set of control commands and expressions. Unfortunately, algorithmic patterns tend to generate some quirky side-effects within the test equipment. For example, dedicated hardware registers in the test equipment may become corrupted with invalid data during the generation of complicated test patterns. Such problems not withstanding, algorithmic patterns remain a mainstay of memory device test protocols. This is not surprising given the great number of memory locations which must be tested in contemporary memory devices. The practical implementation of a test which repeatedly writes data patterns to every location in a memory device requires some sort of looping operation. A set of linear test vectors sufficient to test the full storage capacity of contemporary memory deices would be impossibly long.
- A “test” consists of one or more test vectors and/or one or more algorithmic patterns. In creating a test, a test writer must define a sequence of operations which store and retrieve data to/from the memory device in accordance with certain “operating constraints.” Operating constraints take many forms including state-based and timing-based constraints, as well as other constraints which govern the proper operation of the memory device. (Attempting to CAS a bank of memory before it has been properly RASed in one example of a state-based constraint being violated. Attempting to CAS a memory bank too soon after it was RASed is an example of a timing constraint being violated). The operation of early memory devices was simple and characterized by relatively few constraints. As memory devices have increased in complexity, a greater number of operating constraints have arisen. These constraints must be observed and accounted for during the definition and creation of a test.
- Contemporary memory devices allow multiple transactions to handled simultaneously. Compared to their predecessors, contemporary memory devices have an increased number of operating constraints which must be obeyed during a sequence of memory system operations. Further, the use of packets to exchange control/address information and data greatly expands the number of constraints which must be obeyed during the definition of a memory device test protocol. Not only does the number of constraints (or rules) increase for each individual transaction defined within the test protocol, but also the number of interactions between the various rules increases as multiple concurrent transactions are performed to fully test the capabilities of the memory device.
- All of the foregoing has created quite a mess. Each memory device manufacturer prescribes a set of tests which targets different aspects of their particular design. Memory device test writers currently generate test protocols without benefit of a tool which provides feedback as to whether or not a test step or test routine violates one or more memory device constraints.
- Accordingly, when a memory device fails a test, it is not certain whether the memory device is truly broken, or whether the test has been improperly constructed. In such circumstances, the test writer might ask the memory device designers whether the present interpretation of memory device constraints is correct. However, even if the interpretation is correct, the constraints may not be properly expressed in the written test code. Often a memory device “known-to-be-good” is used to test the test. This method presumes that the “knowngood” memory device is still good despite its repeated handling in the test facility.
- The flowchart of FIG. 1 illustrates a typical conventional process through which a memory device test is generated. Using current interpretations of memory device constraints, a test is created2, and run 3 on a memory device. If the memory device passes the test (4=yes), the test and the memory device are assumed to be good. As mentioned above, this assumption is often bolstered by the used of a “known-good” memory device during test development.
- If the memory device fails the tests (4=no), the test writer is left in doubt as to whether the device failed on its own accord or whether the test is bad 6. Assuming the test has violated some memory device constraint (7=yes), the test is changed 9 and the new test is run 3. If the test writer has confidence in the test (7=no), the memory device is replaced 8 and the test is rerun 3.
- The conventional process of test generation thus relies on assumption and “trial-and-error” tactics to arrive at a test presumed to be good. Further, each new test must be verified against a number of different conditions, such as temperature, data state, power level, etc. The process of test design is lengthy and fraught with doubt. In fact, errors may enter the test design process during any one of
steps - For example, a timing constraint, such as the minimum period between RAS-to-CAS (tRCD), might be violated by a test which defines a slightly shorter period than that prescribed by the memory device specification. Using this constraint as an example, one batch of memory devices might pass the test even though the test violates the specification for the devices. As a result, the test and the batch of memory devices are assumed to be good. (
Step 5 above). As it turns out, the test violates the minimum tRCD period for the memory device, but the first batch of memory devices were able to tolerate the shorter than specified period for tRCD. - Unfortunately, a subsequent batch of memory devices, while in actuality meeting specification, are not able to tolerate the shorter tRCD period defined by the test. Because the test has been assumed “good,” the later batch of memory devices will be considered out-of-specification and may be thrown out. Such an error in the test protocol may not be caught until many good parts have been discarded as bad.
- This result arises because the conventional process of generating a test does not include a mechanism for verifying compliance with actual memory device constraints. Only after a number of memory devices have successfully passed a test is the test assumed to be good. The conventional process of test generation thus involves a “chicken and egg” problem. In order to verify a test, “known-good” memory devices are required. However, known-good memory devices can not be identified until a valid set of tests have been run. Currently, this impasse is breached by running a “mother-of-all-vectors” test on memory devices in an attempt to identify known-good memory devices. While such an approach may serve to verify the memory device interface functionality, it can not reasonably test the entire core of the memory device.
- In sum, as memory devices (or memory modules comprising a number of memory devices), memory controllers, and the exchange of data between the memory devices and the memory controller become more complex, the process of generating and verifying tests becomes vastly more complex. Beyond a certain level of complexity, effective test generation requires some additional means of verifying the test.
- In addition to writing a test which adheres to the increasing multiplicity of memory device constraints, a test writer is motivated to write efficient tests. The time required to perform a test typically rises as memory devices increase in capacity and complexity. Often the goals of writing a complete, constraint compliant test and writing a run-time efficient test are at odds.
- The process of generating memory device tests also requires some means for writing and expressing the tests in a higher level language. The current use of low-level commands, such as Direct RDRAM protocol operations, for example, necessitates that test writers be familiar with such cryptic programming means. Such a requirement unduly burdens test writers and inhibits the development of tests.
- In a first general aspect, the present invention provides a method by which a test writer may determine whether a proposed test violates any operating constraint for the memory device being tested. A simulator for a collection of one or more memory devices is developed using a parameter list covering all relevant constraints. A test is typically defined by a sequence of time-ordered operations. This time-ordered sequence is passed through the simulator to verify that it adheres to the operating constraints.
- Constraint violations are indicated by error messages. The error messages may offer suggested fixes, such as timing adjustments required to place the sequence of operations in compliance with the constraints.
- In a second general aspect, the present invention provides a “packer” function. A verified test may be passed through the packer to reduce its run-time in relation to the given constraints.
- The present invention further provides methods for addressing the issue of programming language translation. Recognizing that the simulator is compatible with one programming language while a custom tester is compatible with another programming language, the present invention allows translation from one programming language to the other. In such cases, a test may be written in a tester compatible language and translated before verification in the simulator, or the test may be written in a simulator compatible language and translated after verification and run-time reduction.
- FIG. 1 is a flowchart illustrating a conventional method for generating a memory device test;
- FIG. 2 is a flowchart illustrating a method of generating and verifying a memory device test according to one aspect of the present invention; and
- FIG. 3 is a flowchart illustrating a method of generating and verifying a memory device test according to another aspect of the present invention.
- At points in the following discussion, the terms “optimize,” optimizing,” “minimize,” “minimizing,” and their like are used to describe the effect of the present invention. These are relative terms in the sense that the present invention, at least in one aspect, is capable of significantly reducing the run-time of a test. However, one of ordinary skill in the art will recognize that any run-time reduction realized by the present invention is made in relation to a particular set of system constraints. Change the constraints and the run-time reduction realized may change as well. Thus, the foregoing terms should not be limited to absolute definitions of the minimum, or the optimal solution. Rather, “optimize” should, for example, be read as “further optimize, given the existing set of constraints.” For the sake of clarity, however, such wordier characterizations are omitted in favor of the simpler terms noted.
- The exemplary embodiments which follow are described in the context of a high-speed memory system which uses packetized control/address and data exchanges between a memory controller and one or more memory devices via a communications channel. That is, the test(s) generated, verified and run-time optimized by the present invention have particular application to at least contemporary memory systems like those designed by Rambus. Inc. of Mountain View, Calif. The Rambus DRAM (RDRAM) and its application in high-speed memory systems are well documented in available technical literature. While the present invention has been developed in relation to the Rambus memory architecture, it has much broader application. In fact, any test directed to a memory having a complex set of constraints will benefit from the dictates and teaching of the present invention.
- The expression “memory device test(s)” is used throughout to broadly denote a test which exercises not only the internal functionality and storage capabilities of a memory device or a collection of memory devices (such as a module), but also the ability of the memory device or module to communicate with an external memory controller. Thus, as expressed herein, “testing” a memory device connotes all aspects of transferring control/address information and data to and from the memory device, as well as storing data and retrieving data from the memory device.
- In one aspect of the present invention, the behavior of a memory device or a memory module comprising one or more memory devices is simulated. The simulator is event-driven and directly models the behavior of one or memory devices or modules on a communications channel.
- The test writer provides a parameter file to the simulator that describes the architectural and timing characteristics of the memory device or module being simulated. The parameter file defines the operating constraints specified for the memory device. A time-ordered sequence of memory device operations are also input into the simulator. This set of operations is the test as first generated. It defines one or more vectors and/or algorithmic operations designed to exercise memory device functionality and storage capabilities. The present invention, as described in greater detail below, receives both the parameter file and the set of operations in text format which is easily read and understood. Thus, a familiarity with cryptic assembly languages is not a prerequisite to understanding and contributing to the test generation process facilitated by the present invention.
- The simulator runs the set of operations against the set of constraints defined by the parameter file. If the list of operations violates a constraint, the simulator provides an error message. The error message is typically provided on a display screen associated with a computer system running the simulator. Errors are preferably identified in sequence, since the simulator will typically traverse the set of operations in a time-ordered sequence. Sequential error identification allows the test writer to verify early operations which may impact later operations in the test.
- However, while presently preferred, error messages need not be sequentially related to a time-ordered set of operations. For example, some set of operations may include “JUMP” or “GOTO” branching operations which are implicated by a number of conditions. When executed, these operations may essentially re-order the set of operations according to the conditions.
- Error messages may include a variable level of user feedback depending on the desired sophistication of the simulator. State-based error messages will communicate the state or memory device resource in conflict. State-based error messages may also identify a suggested state adjustment which will overcome the identified violation. Time-based error messages will communicate the timing constraint being violated. Time-based error messages may also identify a suggested timing adjustment which will overcome the identified violation.
- The temporal relationship between operations in the set of operations has meaning beyond the ability of the set of operations to conform to the timing constraints expressed in the parameter file. As mentioned above, memory device testing must be as time efficient as possible to minimize testing overhead and associated costs.
- Thus, in a second general aspect, the present invention provides a packer, i.e., a function which temporally “packs” the operations as tightly as possible given the current set of constraints. The packer accepts the time-ordered sequence of operations and the parameter file as inputs. The packer then iteratively calls the simulator to produce a version of the time-ordered sequence which minimizes the time allocated between different operations. In one embodiment of the packer, no attempt is made to re-order the sequence of operations. However, in other embodiments, re-ordering may be performed or suggested to the user. Further, write buffer side effects, where present, are maintained between unpacked and packed versions of the operations sequence. For example, if the unpacked sequence of operations calls for a write buffer to be cleared before the next operation, the packed sequence of operations maintains this requirement.
- In this manner, operations are packed together as tightly as possible within the limits specified by the parameter file. When the simulator and packer are used together, a test writer need not worry about minimizing the time allocated between operations in the sequence of operations when the test is being written. Rather, when written the sequence of operations may be safely padded with time, and the packer function can thereafter be relied upon to generate a constraint compliant sequence of operations having optimal inter-operation timing with respect to the defined constraints. In effect, the burden of remembering and optimizing inter-operation timing considerations for a particular memory device or collection of one or more memory devices or modules is completely lifted from the test writer.
- While the application of packer to a test offers significant benefit to test writers, and while much of this benefit may derived in the automated output of the packer function, it should be recognized that the expansive breadth of possible tests preclude a trivial “one-size” fits all approach to test verification and optimization. For example, the effective application of packer to some algorithmic tests comprising complex looping functions is non-trivial. Loop function annotations, i.e., comments written with the code implementing the loop function, might be necessary for packer to determine “pre-optimization” the structure of the loop. In fact, restrictions may necessarily be placed on the structure of loops in a test. Further, the present invention may be used to effectively verify and optimize such algorithmic tests by providing feedback to hand-alter the test, rather than the automated method described above.
- In a similar vein, the present invention recognizes that some tests can be very long, and involve so many protocol operations that full simulation is impractical. Fortunately, many of these very long tests incorporate a unique test routine (or test kernel) which is repeated at great length. For such tests, the present invention may be used to verify and optimize the test kernel and extrapolate the resulting feedback to alter the entire test.
- Such routine tradeoffs are left to the practitioner. Rather than merely verify the test kernel, the entire very lengthy test may be verified and run-time optimized, provided the test writer is willing to wait during the lengthy period of time such “full testing” may require.
- Alternatively, extremely powerful test hardware may be used to reduce the test verification and/or run-time optimizing time.
- As implemented, the present invention effectively addresses “translation” issues while providing the simulator and packer functions to the test writer. As presently preferred, the simulator is written in a high level language like “C” on a UNIX based platform. A standard tool set or threads package, such as the CSIM17 software library offered by Mesquite Software™, may be used to write the simulator. The simulator may be written to test memory devices on an individual basis, in groups (such as modules), and/or to test a channel fully populated channel with memory modules. The packer function is presently implemented as a “Perl script,” a well known UNIX programming language.
- In contrast, most testers require that a test be created and run in an entirely different language. Given existing, significant capital investment in testers and the custom nature of tester development, a translation must occur between the tester environment and the simulator/packer environment. Such translation is best accomplished by a piece of code separate from the simulator, since it must be written in relation to the specific tester compatible programing language.
- Use of a higher level language to write the simulator allows a related group of primitive memory device operations to be expressed as a single command. When executed during simulator operation, such a command is converted back into the set of primitive operations. The conversion process is transparent to the test user. Commands thus defined within the simulator are akin to conventional software “macros.” A command may have timing information embedded within it, or it may be a simple list of primitive operations. Commands lacking timing information are very much like memory controller commands. In fact, the set of memory controller commands may be readily drawn upon to help define efficient simulator commands. For example, the command “Fetch Byte” might consist of a RAS operation, a CAS operation, and a Precharge operation. Conversion of the command might be performed in either a software model, written with reference to the memory controller command definitions, or an application specific integrated circuit (ASIC). However implemented, the conversion interpreter translates the command into a corresponding set of primitive operations.
- By allowing the definition of macros, a library of validated high-level commands can be developed which allows a test writer to efficiently express a complex set of primitive operations without sacrificing accuracy. Test users, often different from the test writer, may review the high level code implementing the test to better understand the test's flow and application. User feedback refining subsequent test generations is thus facilitated. Finally, once effective macros are defined, subsequent test writers, perhaps lacking a detailed knowledge of the underlying primitives, may nonetheless write or modify memory device tests in a competent manner.
- FIG. 2 is a flowchart illustrating use of the simulator and packer functions of the present invention to generate and verify a memory device test. Once a test is created10 it may need to be translated from a tester-compatible language into a simulator/packer
compatible language 11. In other words, the test must conform to the simulator's input format. Since the simulator is written in a higher level language, tester compatible language conversion, if necessary, is readily accomplished. - Once the test is compatible with the simulator language, the test is passed through the
simulator 12. If the test does not violate any constraint defined by the parameter list implemented in the simulator (13=yes), no error message is generated and the test is ready for run-time optimization in the packer. - If, however, the simulator returns one or more error messages (13=no and 14), the test is altered to correct the
noted constraint violations 15, and the test is run through the simulator again. This process is performed iteratively until the test passes through the simulator without error (13=yes). - Once the test complies with all constraints checked by the simulator, it is run through the packer (16=no and 17). Packer may dictate alteration of the
test 18 to minimize the run-time of the sequence of operations. Like the simulator, the packer may be run a number of times until the test is fully optimized. Thereafter, the test is accepted as good 19 and may be placed in a suite of memory device tests. - The flowchart shown in FIG. 3 illustrates another method by which the simulator and packer of the present invention may be used to generate and verify a memory device test. In the second illustrated approach, the test is first written in a simulator
compatible language 20 without regard to the ultimate language or format used by the tester. This is at odds with the first approach discussed above which assumes an existing test written in tester compatible language. - By writing the test in a format compatible with the simulator, the front end translations required in the first approach are avoided. The test is then passed through the simulator. If one or more error messages are returned (21=no) the test is altered according to the
noted errors 22 and re-run. The first approach requires that the test be modified when error(s) are found in the tester language. This modification will take place in the tester compatible language. Thus, translation between the two programming languages must take place repeatedly as the test is run iteratively through the simulator. The second approach does not require this repeated programming language translation as part of the iterative test generation and verification process. - Once the test passes through the simulator without error (21=yes), it may be time optimized by running packer (23=yes and 24). Only after being verified against a complete set of memory device constraints and optimized in run time is the test translated from the simulator/packer compatible language to the tester
compatible language 25, if necessary. Finally, the test is accepted as good 26 and is ready to used in actual testing. - By either method specifically illustrated or their equivalents, the present invention solves the problems inherent in the conventional method for generating memory device tests. Operating constraints are observed and automatically checked during the test generation. Resulting tests are known to be “good” in relation to actual constraints specified for the memory device. In contrast, the tests resulting from the conventional process are only known to be good in relation to some set of selected memory devices. When memory devices fail the conventional test, the tester is left to question whether the problem resides with the test or the new set of memory devices.
- As memory devices and memory system become increasingly complex over time, the test writer may write an entirely new suite of tests, re-write selected tests that have become outdated in view of the new memory device(s), or merely add one or more new tests to an existing suite of tests which are specifically directed to the expanded functionality of the new memory device(s). Since tests may be written in a higher level language, test generation is efficient.
- Further, tests which conform to all memory device constraints may be optimized in their run-time by the present invention's packer function. Test writers need not struggle to efficiently time a sequence of operations under development. Rather, operations may be spaced with such extra time as is required to allow any combination of operations to run. Subsequently, packer will squeeze the sequence of operations down to its optimal run time.
- Conventional test vectors and algorithmic patterns are often written in cryptic assembly code. It is often difficult to tell how much time passes, or even what operation is being performed in the tests written in such languages. The definition and expression of the simulator and packer of the present invention may be had in a higher level language. By using the same text-based programming language to write a test, the test writer may create a program which is very readable. Once written, verified, and run-time optimized, the test may be translated by a separate piece of code into a tester compatible language.
- The input format to the simulator may be readily modeled in accordance with the packet commands used in a memory system incorporating the memory devices to be tested. That is, assuming an existing command format or structure between a memory controller and a memory device, this format may readily serve as the basis for the simulator's input format.
- The present invention has been described in relation to several examples. These are, however, merely teaching examples. The examples are drawn to individual memory devices and collections or groups of memory devices susceptible to the benefits of the present invention. However, the present invention may be used to verify and/or run-time optimize a test for any “memory.” The physical form or architecture of the memory being tested is not a limiting factor in the application of the present invention, so long as an accurate simulator can be developed for the memory.
Claims (22)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/453,368 US6704891B2 (en) | 2000-01-18 | 2003-06-02 | Method for verifying and improving run-time of a memory test |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/484,431 US6574759B1 (en) | 2000-01-18 | 2000-01-18 | Method for verifying and improving run-time of a memory test |
US10/453,368 US6704891B2 (en) | 2000-01-18 | 2003-06-02 | Method for verifying and improving run-time of a memory test |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/484,431 Continuation US6574759B1 (en) | 2000-01-18 | 2000-01-18 | Method for verifying and improving run-time of a memory test |
Publications (2)
Publication Number | Publication Date |
---|---|
US20030200491A1 true US20030200491A1 (en) | 2003-10-23 |
US6704891B2 US6704891B2 (en) | 2004-03-09 |
Family
ID=23924146
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/484,431 Expired - Lifetime US6574759B1 (en) | 2000-01-18 | 2000-01-18 | Method for verifying and improving run-time of a memory test |
US10/453,368 Expired - Lifetime US6704891B2 (en) | 2000-01-18 | 2003-06-02 | Method for verifying and improving run-time of a memory test |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US09/484,431 Expired - Lifetime US6574759B1 (en) | 2000-01-18 | 2000-01-18 | Method for verifying and improving run-time of a memory test |
Country Status (1)
Country | Link |
---|---|
US (2) | US6574759B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320877A1 (en) * | 2010-06-28 | 2011-12-29 | Ramesh Devarajan | Replaying architectural execution with a probeless trace capture |
CN102892851A (en) * | 2010-05-14 | 2013-01-23 | 旭硝子株式会社 | Application liquid for forming ultraviolet-absorbing film, and ultraviolet-absorbing glass article |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6760857B1 (en) * | 2000-02-18 | 2004-07-06 | Rambus Inc. | System having both externally and internally generated clock signals being asserted on the same clock pin in normal and test modes of operation respectively |
US7194705B1 (en) * | 2003-03-14 | 2007-03-20 | Xilinx, Inc. | Simulation of integrated circuitry within a high-level modeling system using hardware description language circuit descriptions |
US20050086456A1 (en) * | 2003-09-29 | 2005-04-21 | Yaron Elboim | Addressing scheme to load configuration registers |
US7526745B2 (en) * | 2004-12-08 | 2009-04-28 | Telefonaktiebolaget L M Ericsson (Publ) | Method for specification and integration of reusable IP constraints |
US20060236185A1 (en) * | 2005-04-04 | 2006-10-19 | Ronald Baker | Multiple function results using single pattern and method |
US7539912B2 (en) | 2005-12-15 | 2009-05-26 | King Tiger Technology, Inc. | Method and apparatus for testing a fully buffered memory module |
JP2007219930A (en) * | 2006-02-17 | 2007-08-30 | Elpida Memory Inc | Simulation method and program |
US7620861B2 (en) * | 2007-05-31 | 2009-11-17 | Kingtiger Technology (Canada) Inc. | Method and apparatus for testing integrated circuits by employing test vector patterns that satisfy passband requirements imposed by communication channels |
JP4882935B2 (en) * | 2007-09-18 | 2012-02-22 | 富士ゼロックス株式会社 | Communication information processing apparatus, communication information processing system, and communication information processing program |
US7757144B2 (en) | 2007-11-01 | 2010-07-13 | Kingtiger Technology (Canada) Inc. | System and method for testing integrated circuit modules comprising a plurality of integrated circuit devices |
US7848899B2 (en) * | 2008-06-09 | 2010-12-07 | Kingtiger Technology (Canada) Inc. | Systems and methods for testing integrated circuit devices |
US7743292B2 (en) * | 2008-06-13 | 2010-06-22 | Silicon Motion Inc. | Apparatus and method for memory card testing |
US8356215B2 (en) * | 2010-01-19 | 2013-01-15 | Kingtiger Technology (Canada) Inc. | Testing apparatus and method for analyzing a memory module operating within an application system |
US8918686B2 (en) | 2010-08-18 | 2014-12-23 | Kingtiger Technology (Canada) Inc. | Determining data valid windows in a system and method for testing an integrated circuit device |
US9003256B2 (en) | 2011-09-06 | 2015-04-07 | Kingtiger Technology (Canada) Inc. | System and method for testing integrated circuits by determining the solid timing window |
US8724408B2 (en) | 2011-11-29 | 2014-05-13 | Kingtiger Technology (Canada) Inc. | Systems and methods for testing and assembling memory modules |
US9117552B2 (en) | 2012-08-28 | 2015-08-25 | Kingtiger Technology(Canada), Inc. | Systems and methods for testing memory |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4801870A (en) * | 1985-06-24 | 1989-01-31 | International Business Machines Corporation | Weighted random pattern testing apparatus and method |
US5740353A (en) * | 1995-12-14 | 1998-04-14 | International Business Machines Corporation | Method and apparatus for creating a multiprocessor verification environment |
US5974241A (en) * | 1997-06-17 | 1999-10-26 | Lsi Logic Corporation | Test bench interface generator for tester compatible simulations |
US6080203A (en) * | 1997-12-18 | 2000-06-27 | Advanced Micro Devices, Inc. | Apparatus and method for designing a test and modeling system for a network switch device |
US6170078B1 (en) * | 1998-02-27 | 2001-01-02 | International Business Machines Corporation | Fault simulation using dynamically alterable behavioral models |
US6212667B1 (en) * | 1998-07-30 | 2001-04-03 | International Business Machines Corporation | Integrated circuit test coverage evaluation and adjustment mechanism and method |
US6295623B1 (en) * | 1999-01-29 | 2001-09-25 | Credence Systems Corporation | System for testing real and simulated versions of an integrated circuit |
US6311317B1 (en) * | 1999-03-31 | 2001-10-30 | Synopsys, Inc. | Pre-synthesis test point insertion |
US20010037497A1 (en) * | 1998-12-22 | 2001-11-01 | Kouichi Kumon | Apparatus and method for generating optimization objects |
US6327686B1 (en) * | 1999-04-22 | 2001-12-04 | Compaq Computer Corporation | Method for analyzing manufacturing test pattern coverage of critical delay circuit paths |
US20020010909A1 (en) * | 1999-10-05 | 2002-01-24 | Dietrich Charisius | Methods and systems for finding and displaying linked objects |
US20020016954A1 (en) * | 1999-10-05 | 2002-02-07 | Dietrich Charisius | Methods and systems for relating data structures and object-oriented elements for distributed computing |
US20020029231A1 (en) * | 1999-10-05 | 2002-03-07 | Alexander Aptus | Navigation links in generated documentation |
US20020032900A1 (en) * | 1999-10-05 | 2002-03-14 | Dietrich Charisius | Methods and systems for generating source code for object oriented elements |
-
2000
- 2000-01-18 US US09/484,431 patent/US6574759B1/en not_active Expired - Lifetime
-
2003
- 2003-06-02 US US10/453,368 patent/US6704891B2/en not_active Expired - Lifetime
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4801870A (en) * | 1985-06-24 | 1989-01-31 | International Business Machines Corporation | Weighted random pattern testing apparatus and method |
US5740353A (en) * | 1995-12-14 | 1998-04-14 | International Business Machines Corporation | Method and apparatus for creating a multiprocessor verification environment |
US5974241A (en) * | 1997-06-17 | 1999-10-26 | Lsi Logic Corporation | Test bench interface generator for tester compatible simulations |
US6080203A (en) * | 1997-12-18 | 2000-06-27 | Advanced Micro Devices, Inc. | Apparatus and method for designing a test and modeling system for a network switch device |
US6170078B1 (en) * | 1998-02-27 | 2001-01-02 | International Business Machines Corporation | Fault simulation using dynamically alterable behavioral models |
US6212667B1 (en) * | 1998-07-30 | 2001-04-03 | International Business Machines Corporation | Integrated circuit test coverage evaluation and adjustment mechanism and method |
US20010037497A1 (en) * | 1998-12-22 | 2001-11-01 | Kouichi Kumon | Apparatus and method for generating optimization objects |
US6295623B1 (en) * | 1999-01-29 | 2001-09-25 | Credence Systems Corporation | System for testing real and simulated versions of an integrated circuit |
US6311317B1 (en) * | 1999-03-31 | 2001-10-30 | Synopsys, Inc. | Pre-synthesis test point insertion |
US6327686B1 (en) * | 1999-04-22 | 2001-12-04 | Compaq Computer Corporation | Method for analyzing manufacturing test pattern coverage of critical delay circuit paths |
US20020010909A1 (en) * | 1999-10-05 | 2002-01-24 | Dietrich Charisius | Methods and systems for finding and displaying linked objects |
US20020016954A1 (en) * | 1999-10-05 | 2002-02-07 | Dietrich Charisius | Methods and systems for relating data structures and object-oriented elements for distributed computing |
US20020029231A1 (en) * | 1999-10-05 | 2002-03-07 | Alexander Aptus | Navigation links in generated documentation |
US20020032900A1 (en) * | 1999-10-05 | 2002-03-14 | Dietrich Charisius | Methods and systems for generating source code for object oriented elements |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102892851A (en) * | 2010-05-14 | 2013-01-23 | 旭硝子株式会社 | Application liquid for forming ultraviolet-absorbing film, and ultraviolet-absorbing glass article |
US20110320877A1 (en) * | 2010-06-28 | 2011-12-29 | Ramesh Devarajan | Replaying architectural execution with a probeless trace capture |
US8924788B2 (en) * | 2010-06-28 | 2014-12-30 | Intel Corporation | Replaying architectural execution with a probeless trace capture |
KR101505258B1 (en) | 2010-06-28 | 2015-03-24 | 인텔 코포레이션 | Replaying architectural execution with a probeless trace capture |
Also Published As
Publication number | Publication date |
---|---|
US6704891B2 (en) | 2004-03-09 |
US6574759B1 (en) | 2003-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6574759B1 (en) | Method for verifying and improving run-time of a memory test | |
US7234094B2 (en) | Automaton synchronization during system verification | |
US6484135B1 (en) | Method for adaptive test generation via feedback from dynamic emulation | |
US5715433A (en) | Dynamic software model for emulating hardware | |
US6321186B1 (en) | Method and apparatus for integrated circuit design verification | |
US5202889A (en) | Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs | |
US6487704B1 (en) | System and method for identifying finite state machines and verifying circuit designs | |
TW594513B (en) | Apparatus and method for in-circuit emulation using high-level programming language | |
US6327556B1 (en) | AT-speed computer model testing methods | |
JP2009116876A (en) | Simulation system and method for test device, and program product | |
US7107569B2 (en) | Design method and apparatus for a semiconductor integrated circuit comprising checkers verifying the interface between circuit blocks | |
US20070061641A1 (en) | Apparatus and method for generating test driver | |
US7665067B2 (en) | Method and system for automatically creating tests | |
US7137087B1 (en) | Integrated circuit verification scheme | |
US7231338B2 (en) | Distributed simulation system having phases of a timestep | |
JPH04246776A (en) | Method and device for organizing and analyzing timing information | |
US6505149B1 (en) | Method and system for verifying a source-synchronous communication interface of a device | |
KR20230109626A (en) | Automatic sequential retries for hardware design compile failures | |
US7386434B1 (en) | Method and apparatus for creating integrated circuit simulator test source files | |
US7299447B2 (en) | Method of testing a mapping of an electrical circuit | |
US20020004918A1 (en) | Method for the preparation and execution of a self-test procedure and associated self-test generating method | |
CN107885925B (en) | Register testing method in EDA (electronic design automation) verification stage | |
KR102301651B1 (en) | Apparatus and Method for Generating of Test Pattern, Test System Using the Same, Computer Program Therefor | |
CN115495388B (en) | Chip verification method, device, equipment and medium for AI reasoning chip | |
CN116932412B (en) | Sharing platform and method capable of generating test excitation files with different formats |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 8 |
|
AS | Assignment |
Owner name: FTE EXCHANGE, LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAMBUS, INC.;REEL/FRAME:029609/0437 Effective date: 20120927 Owner name: PAPST LICENSING GMBH & CO. KG, GERMANY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FTE EXCHANGE, LLC;REEL/FRAME:029609/0547 Effective date: 20120210 |
|
FPAY | Fee payment |
Year of fee payment: 12 |
|
IPRC | Trial and appeal board: inter partes review certificate |
Kind code of ref document: K1 Owner name: PAPST LICENSING GMBH CO., KG Free format text: INTER PARTES REVIEW CERTIFICATE; TRIAL NO. IPR2016-00105, OCT. 28, 2015 INTER PARTES REVIEW CERTIFICATE; TRIAL NO. IPR2016-00105, OCT. 28, 2015 Opponent name: XILINX, INC. Effective date: 20180111 |