Method and apparatus for encoding and generating transaction-based stimulus for simulation of VLSI circuits
The invention comprises a method and system for encoding and generating transaction-based stimuli event states for the eventual application to the simulation of VLSI circuits. In the invention, each test state input is described by a vector where that vector is characterized by two symbols. The first symbol is the “stride” which references its relative time of reoccurrence among the test state inputs. The second symbol denotes the specific transaction on that stride. The stride is a number that is incommensurate relative to the other strides of the transactions.
The present application is related to concurrently filed, co-pending, and commonly assigned U.S. patent application Ser. No. [Attorney Docket Number 10002450-1], entitled “METHOD AND APPARATUS FOR GENERATING TRANSACTION-BASED STIMULUS FOR SIMULATION OF VLSI CIRCUITS USING EVENT COVERAGE ANALYSIS,” the disclosure of which is hereby incorporated herein by reference.
TECHNICAL FIELDThis invention relates in general to generating and applying test transaction stimuli to test VLSI circuits.
BACKGROUNDSimulating integrated circuits has proved to be a very useful process for finding circuit design problems before product release. In particular, known testing techniques have been directed to CPUs (central processing units) and associated buses. Typically, in testing VLSI (very large-scale integrated) circuits such as these, a large number of different test cases are processed in order to uncover problem states. An example of test cases may be found in U.S. Pat. No. 5,956,476 to Ransom et al., which is incorporated herein by reference. In previous approaches, a large number of cases might be randomly generated by specifying a weighted mix of transaction (e.g., read, write) types. For example, a mixture of 20% reads and 80% writes might be generated. Using random generation, the timing relationship between any of the events is neither specified nor controllable.
Test cases for application to such a system topology may be randomly generated. Random generation is illustrated in Cox, P., et al. “Statistical Modeling for Efficient Parametric Yield Estimation of MOS VLSI Circuits”, IEEE Trans. Electron. Devices, vol. ED-32 No. 2, 471-478, 1985, which is incorporated herein by reference. Other examples of random generation of test cases include U.S. Pat. No. 6,018,623 to Chang et al., which is incorporated herein by reference.
Also, known techniques utilized to ascertain problem states include manual development of test cases. For example, a transaction might be set up on an external BUS at time t0 and then have a transaction injected onto the internal BUS at a time t=t0−tA. Also, tA is initially set to equal t1 and successively varied until t equals time t0. Also, tA may be varied until it reaches −t1. The hypothesis is that if there is any important timing relationship between the two transactions, that relationship would be discovered by exhaustively iterating the relative times of the two transactions.
Random generation of test states is fairly automatic. However, the amount of computational effort necessary to cover desired events can be very large. Also, random generation is problematic in that it is often difficult to repeat problem states. For example, if something changes in the execution of the model of the circuit under test, a purely random string of transactions may not re-trigger that event. Alternatively, handwritten generation of test states may identify problem states more easily. However, handwritten generation of states requires extensive hand coding by someone who has extensive knowledge of the system under test. Specifically, this technique requires significant input from highly skilled personnel.
SUMMARY OF THE INVENTIONThe present invention is directed to a method and system for encoding or describing and generating transaction-based stimuli event states for eventual application to the simulation of VLSI circuits. In the invention, each test state input is described by a vector that is characterized by two symbols. The first symbol is the “stride” which references its relative time of reoccurrence among the test state inputs. The second symbol denotes the specific transaction on that stride.
Using the invention, the test states can be exhaustively generated. In generating test states, one or more transactions are used with each transaction being preferably composed of a function and a bus command. The stride for issuing the transaction is incommensurate with respect to the strides of the other transactions, for example each stride is a prime number. The total set of input stimuli for a given test case is characterized by a set of vectors, V1, V2, . . . VN, where each of the vectors is described by its stride, Stj, and its transaction number, Tnk, so that the initial state has the description: TCI{V1[St1, Tn1], V2[St2, Tn2], . . . VN[StN TnN]}. Each transaction occurs at its initial time or stride, and at integer multiples of that stride.
The foregoing has outlined rather broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention. It should be appreciated by those skilled in the art that the conception and specific embodiment disclosed may be readily utilized as a basis for modifying or designing other structures for carrying out the same purposes of the present invention. It should also be realized by those skilled in the art that such equivalent constructions do not depart from the spirit and scope of the invention as set forth in the appended claims.
BRIEF-DESCRIPTION OF THE DRAWINGFor a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawing, in which:
An embodiment of this invention comprises a method and apparatus for encoding and generating transaction-based stimuli event states for the eventual application to the simulation of VLSI circuits. In the preferred embodiment of the invention, each test state input is described by a vector where that vector is characterized by a series of pair values. The first value of the pair is the “stride” which references a relative time of reoccurrence among the test state inputs. The second value of the pair denotes the specific transaction on that stride. If the values of the strides are fixed and the same for each of the vectors, then the vectors need only comprise a single value, namely the specific transaction, in a particular order. The particular order of the transactions would imply the stride value for each of the transactions. For example, given strides of 7, 11, 13, 17, then a vector comprising A, B, C, D transactions would be interpreted as A 7, B 11, C 13, and D17. Similarly, a vector comprising W, J, D, M, would be interpreted as W 7, J 11, D 113, M 17. Each transaction preferably comprises a function, bus command, and comer case information. The stride, or reoccurrence time, for each transaction is preferably set to a predetermined value that is incommensurate relative to the other transactions being tested.
The circuit of
During operations, a variety of transactions can be delivered to the interface at different times, and the interface needs to operate properly. To ensure such proper operations, the simulation should send a variety of transactions at different times. With the circuit shown in
The inventive generator instructs the emulators on when to issue transactions and which transactions to issue. The generator is preferably envisioned as a gear system, as shown in
The generator 107 of
As shown in
The preferred operation of the generator is explained in conjunction with the flow chart of
The generator then looks up 504 the first command on the list, for example R, in the command table 402, which is shown in
The function 404, 405 then invokes 507 its associated emulator 106, 105 to issue the bus command onto the associated bus 104, 102 which will then be received by the interface 103. It is preferable to have the functions 403, 404, 405 read the current time unit from counter 406 and determine 507 the next time that the transaction command should be initiated based on the stride, however this operation may be performed by the generator or some other entity. The time of the next reissue of the transaction is then returned to the generator. The generator then re-invokes 508 the function 403, 404, 405 when the counter 406 reaches the designed reissue time. Note that the reissue times for each of the transactions would be maintained by the generator in separate registers 407, which may be either internal or external to the generator. The reissuing is repeated until a predetermined event indicates that the simulations should be ended 509, e.g. upon discovery of a problem, reaching a predetermined time period, etc.
The above operations are repeated for each transaction command in the test case. For example, after processing R, the generator would then process W, T, O . . . Note that the processing of the transaction commands is not handled sequentially (i.e. R is completed before W is started), so that multiple transactions are being sent to the interface. Consequently, all functions are called at time 0 and calculate when they should be first called, e.g. 101, 137, 173, etc. based on the strides. These values are then loaded into the registers 407. When the generator notes that counter 406 matches a register, it invokes the appropriate function. The function then updates the register for the next reissue call.
As shown in
When implemented in software, the elements of the present invention are essentially the code segments to perform the necessary tasks. The program or code segments can be stored in a processor readable medium or transmitted by a computer data signal embodied in a carrier wave, or a signal modulated by a carrier, over a transmission medium. The “processor readable medium” may include any medium that can store or transfer information. Examples of the processor readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a compact disk CD-ROM, an optical disk, a hard disk, a fiber optic medium, a radio frequency (RF) link, etc. The computer data signal may include any signal that can propagate over a transmission medium such as electronic network channels, optical fibers, air, electromagnetic, RF links, etc. The code segments may be downloaded via computer networks such as the Internet, Intranet, etc.
Bus 702 is also coupled to input/output (I/O) controller card 705, communications adapter card 711, user interface card 708, and display card 709. The I/O card 705 connects to storage devices 706, such as one or more of a hard drive, a CD drive, a floppy disk drive, or a tape drive, to the computer system. Communications card 711 is adapted to couple the computer system 700 to a network 712, which may be one or more of a telephone network, a local (LAN) and/or a wide-area (WAN) network, an Ethernet network, and/or the Internet network. User interface card 708 couples user input devices, such as keyboard 713 and pointing device 707, to computer system 700. Display card 709 is driven by CPU 701 to control the display on display device 710.
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be used according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.
Claims
1-20. (canceled)
21. A method for testing a device using a plurality of transactions for simulation, the method comprising the steps of:
- providing a plurality of numbers, wherein any one of the plurality is incommensurable to at least one other of the plurality;
- associating each transaction of the plurality of transactions to one of the plurality of numbers;
- engaging each transaction to the device at a particular simulation time that is based on the associated number of each transaction; and
- repeating the step of engaging for each transaction when the simulation time is an integer multiple of its associated number.
22. The method of claim 21 wherein a portion of the plurality of transactions form a test case, and the step of engaging comprises the steps of:
- looking up the test case in a table of test case entries;
- locating a list of transactions associated with the test case;
- looking up each transaction of the list of transaction in a table of transactions;
- locating information associated with each transaction in the table; and
- invoking a function for each transaction based on the information.
23. The method of claim 22 further comprising the step of:
- invoking an emulator, via the function, to issue a command to the device based on the transaction.
24. The method of claim 21 wherein the step of repeating comprises the steps of:
- storing the particular simulation time in a memory;
- calculating a subsequent particular simulation time by adding one of the plurality of incommensurable numbers to the particular simulation time; and
- storing the subsequent particular simulation time after completion of the step of engaging.
25. The method of claim 21 further comprising the step of:
- incrementing a counter to represent the simulation time.
26. The method of claim 21 further comprising the step of:
- selecting the plurality of incommensurable numbers as non-identical prime numbers from the integers between n1 and n2, wherein n2 is greater than n1.
27. A system for testing a device using a plurality of transactions for simulation comprising:
- means for providing a plurality of numbers, wherein any one of the plurality is incommensurable to at least one other of the plurality;
- means for associating each transaction of the plurality of transactions to a respective number of the plurality of numbers;
- means for engaging each transaction to the device at a particular simulation time that is based on the associated number of each transaction; and
- means for repeating the means for engaging for each transaction when the simulation time is an integer multiple of its associated number.
28. The system of claim 27 wherein a portion of the plurality of transactions form a test case, and the means for engaging comprises:
- means for looking up the test case in a table of test case entries and locating a list of transactions associated with the test case;
- means for looking up each transaction of the list of transaction in a table of transactions and locating information associated with each transaction in the table; and
- means for invoking a function for each transaction based on the information.
29. The system of claim 28 further comprising:
- means for invoking an emulator, via the function, to issue a command to the device based on the transaction.
30. The system of claim 27 wherein the means for repeating comprises:
- means for storing the particular simulation time in a memory;
- means for calculating a subsequent particular simulation time by adding one of the plurality of incommensurable numbers to the particular simulation time; and
- means for storing the subsequent particular simulation time after operation of the means for engaging.
31. The system of claim 27 further comprising:
- a counter to represent the simulation time.
32. The system of claim 27 further comprising:
- means for selecting the plurality of incommensurable numbers as non-identical prime numbers from the integers between n1 and n2, wherein n2 is greater than n1.
33. A computer program product having a computer readable medium having computer program logic recorded thereon for testing a device using a plurality of transactions for simulation, the computer program product comprising:
- code for providing a plurality of numbers, wherein any one of the plurality is incommensurable to at least one other of the plurality;
- code for associating each transaction of the plurality of transactions to a respective number of the plurality of numbers;
- code for engaging each transaction to the device at a particular simulation time that is based on the associated number of each transaction, wherein the particular simulation time is an integer multiple of the particular simulation time of a next of said each transaction; and
- code for repeating the means for engaging for each transaction when the simulation time is an integer multiple of its associated number.
34. The computer program product of claim 33 wherein a portion of the plurality of transactions form a test case, and the code for engaging comprises:
- code for looking up the test case in a table of test case entries and locating a list of transactions associated with the test case;
- code for looking up each transaction of the list of transaction in a table of transactions and locating information associated with each transaction in the table; and
- code for invoking a function for each transaction based on the information.
35. The computer program product of claim 34 further comprising:
- code for invoking an emulator, via the function, to issue a command to the device based on the transaction.
36. The computer program product of claim 33 wherein the means for repeating comprises:
- code for storing the particular simulation time in a memory;
- code for calculating a subsequent particular simulation time by adding one of the plurality of incommensurable numbers to the particular simulation time; and
- code for storing the subsequent particular simulation time after operation of the code for engaging.
37. The computer program product of claim 33 further comprising:
- code for selecting the plurality of incommensurable numbers as non-identical prime numbers from the integers between n1 and n2, wherein n2 is greater than n1.
Type: Application
Filed: Mar 21, 2005
Publication Date: Jul 28, 2005
Inventor: Clinton Ramsey (Plano, TX)
Application Number: 11/084,936