Claims
- 1. A method for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port, a plurality of memory locations for storing data, each of the plurality of memory locations comprising an address, the method comprising:
emulating the circuit design in a hardware logic emulation system; immediately prior to writing data to a selected one of the plurality of memory locations in the RAM, reading said data stored at the selected one of the plurality of memory locations in the RAM; storing data read from said selected one of the plurality of memory locations in the RAM in a selected memory location within a buffer, where each of said selected memory location within said buffer are arranged so that data stored in said buffer is output in a last in, first out; and after a checkpoint, transferring the data stored at said selected memory location within said buffer to the selected one of the plurality of memory locations in the RAM.
- 2. The method of claim 1 wherein after said transferring step, the method comprises:
observing the data stored in the selected one of the plurality of memory locations in the RAM after said transferring step.
- 3. The method of claim 1 wherein said reading said data stored at the selected one of the plurality of memory locations in the RAM step comprises:
for each at least one write port in the RAM, inserting a corresponding shadow read port into the circuit design; and conducting a read operation by said corresponding shadow read port so that said data stored at the selected one of the plurality of memory locations in the RAM is read by said corresponding shadow read port.
- 4. The method of claim 1 wherein said transferring step further comprises:
decrementing an address input to said buffer so that each of said selected memory location within said buffer are read out in a last in, first out manner; placing data from each of said selected memory location within said buffer on one of the at least one write ports on the RAM; and writing said data from each of said selected memory location within said buffer placed on one of the at least one write ports on the RAM into the selected one of the plurality of memory locations in the RAM.
- 5. The method of claim 4 wherein said observing step further comprises:
observing at least some of the memory locations in the RAM after said writing step of claim 4.
- 6. An apparatus for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising a write port having a data input and an address input, the RAM further comprising a read port and a plurality of memory locations for storing data, each of the plurality of memory locations comprising an address, the write port having a data input and an address input, comprising:
a shadow read port corresponding to the write port, said shadow read port comprising an address input that receives an address from the address input and a data output; a buffer, said buffer in communication with the address input of the RAM, said buffer also in communication with said data output of said shadow read port, said buffer having an address output and a data output; a first multiplexer feeding the address input on the write port, said first multiplexer having a first input in communication with said address output of said buffer, said first multiplexer having a second input in communication with the address input of the RAM; a second multiplexer feeding the data input on the write port, said second multiplexer having a first input in communication said data output of said buffer, said second multiplexer having a second input in communication with the data input of the RAM; and said first multiplexer and said second multiplexer each having a select input that switches between a first mode and a second mode.
- 7. The apparatus of claim 6 wherein said buffer is in communication with a state machine.
- 8. The apparatus of claim 6 wherein said first mode allows signals from the address input of the RAM to be fed to the address input on the write port by said first multiplexer and signals from the data input of the RAM to be fed to the data input on the write port by said second multiplexer.
- 9. The apparatus of claim 8 wherein said second mode allows signals from said address output of said buffer to be fed to the address input on the write port by said first multiplexer and signals from the data output of said buffer to be fed to the data input on the write port by said second multiplexer.
- 10. The apparatus of claim 9 further comprising a state machine in communication with said buffer.
- 11. The apparatus of claim 10 wherein said state machine controls which data and addresses stored in said buffer are read out of said address output and said data output of said buffer when said apparatus is in said second mode.
- 12. An apparatus for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising a first write port and a second write port, said first write port comprising a first data input and a first address input, said second write port comprising a second data input and a second address input, the RAM further comprising first design data input, a first design address input, a second design data input and a second design address input, and a plurality of memory locations for storing data, each of the plurality of memory locations comprising an address, comprising:
a first shadow read port that corresponds to the first write port, the first shadow read port comprising an address input that receives an address from the first design address input, said first shadow read port further comprising a data output; a second shadow read port that corresponds to the second write port, the second shadow read port comprising an address input that receives an address from the second design address input, said second shadow read port further comprising a data output; a first buffer, said first buffer in communication with the first design address input, said first buffer also in communication with said data output of said first shadow read port, said first buffer having an address output and a data output; a second buffer, said second buffer in communication with the second design address input, said second buffer also in communication with said data output of said second shadow read port, said second buffer having an address output and a data output; a first multiplexer feeding the first address input on the first write port, said first multiplexer having a first input in communication with said address output of said second buffer, said first multiplexer having a second input in communication with the first design address input; a second multiplexer feeding the first data input on the first write port, said second multiplexer having a first input in communication said data output of said second buffer, said second multiplexer having a second input in communication with the first design data input; a third multiplexer feeding the first address input on the second write port, said third multiplexer having a first input in communication with said address output of said first buffer, said third multiplexer having a second input in communication with the second design address input; a fourth multiplexer feeding the first data input on the second write port, said fourth multiplexer having a first input in communication with said data output of said first buffer, said fourth multiplexer having a second input in communication with the second design data input; and said first multiplexer, said second multiplexer, said third multiplexer and said fourth multiplexer each having a select input that switches between a first mode and a second mode.
- 13. A method for manipulating a circuit design comprising a random access memory (RAM) so that the circuit design can be debugged, the RAM comprising a write port and a plurality of memory locations for storing data, each of the plurality of memory locations comprising an address, the method comprising:
inserting a shadow read port into the circuit design corresponding to the write port, said shadow read port comprising an address input that receives an address from the circuit design, the shadow read port further comprising a data output; scheduling said shadow read port to read data stored at a selected memory address immediately prior to writing data into said selected memory address by the write port; interconnecting said data output of said shadow read port to a buffer, said buffer storing data read in said scheduling step in a selected memory location, said buffer comprising a data output and an address output; inserting a first multiplexer into the circuit design such that said first multiplexer feeds an address input on the write port, said first multiplexer having a first input in communication with an address input from the circuit design; inserting a second multiplexer into the circuit design such that said second multiplexer feeds a data input on the write port, said second multiplexer having a first input in communication with a data input from the circuit design; interconnecting said address output of said buffer to a second input of said first multiplexer; interconnecting said data output of said buffer to a second input of said second multiplexer; and after a checkpoint, transferring the data stored at said selected memory location within said buffer to the selected one of the plurality of memory locations in the RAM.
- 14. The method of claim 13 wherein said transferring step further comprises:
sending data stored at said selected memory locations within said buffer in a last in, first out order such that each of the selected one of the plurality of memory locations in the RAM is rewound to states held prior to said checkpoint.
- 15. The method of claim 13 further comprising observing at least some of the data stored in the selected one of the plurality of memory locations in the RAM after said transferring step.
- 16. A method for verifying that a circuit design functions as desired by using a functional verification system, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
running the circuit design in the functional verification system; immediately prior to writing data into the RAM, reading said data; storing said data in a buffer; at a checkpoint, reading said data stored in said buffer in reverse order from which said data was written into said buffer; and as said data is read from said buffer, writing said data into said RAM.
- 17. The method of claim 16 wherein the functional verification system comprises a hardware logic verification system.
- 18. The method of claim 17 wherein said hardware logic verification system is a processor based emulation system.
- 19. The method of claim 17 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 20. The method of claim 16 wherein the functional verification system comprises a software simulator.
- 21. An apparatus for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
means for running the circuit design in a functional verification system; means for reading said data immediately prior to writing data into the RAM; means for storing said data in a buffer; means for reading said data stored in said buffer in reverse order from which said data was written into said buffer at a checkpoint; and means for writing said data into said RAM as said data is read from said buffer.
- 22. The apparatus of claim 21 wherein said functional verification system comprises a hardware logic verification system.
- 23. The apparatus of claim 22 wherein said hardware logic verification system is a processor based emulation system.
- 24. The apparatus of claim 22 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 25. The apparatus of claim 21 wherein the functional verification system comprises a software simulator.
- 26. A method for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
running the circuit design in a first functional verification system; immediately prior to writing new data into an address in the RAM, reading previously stored data stored in said address in said RAM; transferring said previously stored data to a system external from the first functional verification system; and at a checkpoint, reconstructing said previously stored data in said external system to create a reconstructed memory, said reconstructed memory corresponding to the plurality of memory locations of the RAM at a predetermined time, said reconstructing step comprising:
reading said previously stored data in a last in, first out order; writing said previously stored data into a memory in said external system, thereby creating said reconstructed memory.
- 27. The method of claim 26, further comprising:
after reconstructing said data, transferring said reconstructed memory to said first functional verification system; and writing said reconstructed memory into the RAM.
- 28. The method of claim 26, further comprising:
after reconstructing said data, transferring said reconstructed memory to a second functional verification system.
- 29. The method of claim 28 wherein said second functional verification system comprises a software simulator.
- 30. The method of claim 26 wherein said first functional verification system comprises a hardware logic verification system.
- 31. A method for verifying that a circuit design functions as desired by using a functional verification system, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
running the circuit design in the functional verification system; saving all write operations in a buffer, each of said write operations comprising an address and data to be stored at said address, said address and said data to be stored at said address being stored in a temporal order corresponding to the order in which said write operations took place; reconstructing an image of the RAM by replaying each of said write operations that are stored in said buffer; and writing said image into said functional verification system.
- 32. The method of claim 31 wherein the functional verification system comprises a hardware logic verification system.
- 33. The method of claim 32 wherein said hardware logic verification system is a processor based emulation system.
- 34. The method of claim 32 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 35. The method of claim 31 wherein the functional verification system comprises a software simulator.
- 36. A method for verifying that a circuit design functions as desired by using a first functional verification system, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
running the circuit design in the first functional verification system; saving all write operations in a buffer, each of said write operations comprising an address and data to be stored at said address, said address and said data to be stored at said address being stored in a temporal order corresponding to the order in which said write operations took place; reconstructing an image of the RAM by replaying each of said write operations that are stored in said buffer, said image comprising at least said data at said address written during each of said write operations; and writing said image into a second functional verification system.
- 37. The method of claim 36 wherein the first functional verification system comprises a hardware logic verification system.
- 38. The method of claim 37 wherein said hardware logic verification system is a processor based emulation system.
- 39. The method of claim 37 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 40. The method of claim 36 wherein the first functional verification system comprises a software simulator.
- 41. The method of claim 36 wherein the second functional verification system comprises a software simulator.
- 42. The method of claim 36 wherein the second functional verification system comprises a hardware logic verification system.
- 43. An apparatus for verifying that a circuit design functions as desired by using a functional verification system, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
means for running the circuit design in the functional verification system; means for saving all write operations in a buffer, each of said write operations comprising an address and data to be stored at said address, said address and said data to be stored at said address being stored in a temporal order corresponding to the order in which said write operations took place; means for reconstructing an image of the RAM by replaying each of said write operations that are stored in said buffer, said image comprising at least said data at said address written during each of said write operations; and means for writing said image into said functional verification system.
- 44. The apparatus of claim 43 wherein the functional verification system comprises a hardware logic verification system.
- 45. The apparatus of claim 44 wherein said hardware logic verification system is a processor based emulation system.
- 46. The apparatus of claim 44 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 47. The apparatus of claim 43 wherein the functional verification system comprises a software simulator.
- 48. An apparatus for verifying that a circuit design functions as desired by using a first functional verification system, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
means for running the circuit design in the first functional verification system; means for saving all write operations in a buffer, each of said write operations comprising an address and data to be stored at said address, said address and said data to be stored at said address being stored in a temporal order corresponding to the order in which said write operations took place; means for reconstructing an image of the RAM by replaying each of said write operations that are stored in said buffer, said image comprising at least said data at said address written during each of said write operations; and means for writing said image into a second functional verification system.
- 49. The apparatus of claim 48 wherein the first functional verification system comprises a hardware logic verification system.
- 50. The apparatus of claim 49 wherein said hardware logic verification system is a processor based emulation system.
- 51. The apparatus of claim 49 wherein said hardware logic verification system is a field programmable gate array (FPGA) based emulation system.
- 52. The apparatus of claim 48 wherein the first functional verification system comprises a software simulator.
- 53. The apparatus of claim 48 wherein the second functional verification system comprises a software simulator.
- 54. The apparatus of claim 48 wherein the second functional verification system comprises a hardware logic verification system.
- 55. An apparatus for verifying that a circuit design functions as desired, the circuit design comprising a random access memory (RAM), the RAM comprising at least one write port and a plurality of memory locations, the method comprising:
means for running the circuit design in a first functional verification system; means for reading previously stored data stored in said address in said RAM immediately prior to writing new data into an address in the RAM; means for transferring said previously stored data to a system external from the first functional verification system; and means for reconstructing said previously stored data in said external system at a checkpoint, to create a reconstructed memory, said reconstructed memory corresponding to the plurality of memory locations of the RAM at a predetermined time, said reconstructing step comprising:
means for reading said previously stored data in a last in, first out order; means for writing said previously stored data into a memory in said external system, thereby creating said reconstructed memory.
- 56. The apparatus of claim 55, further comprising:
means for transferring said reconstructed memory to said first functional verification system after reconstructing said data; and means for writing said reconstructed memory into the RAM.
- 57. The apparatus of claim 55, further comprising:
means for transferring said reconstructed memory to a second functional verification system after reconstructing said data.
- 58. The apparatus of claim 57 wherein said second functional verification system comprises a software simulator.
- 59. The apparatus of claim 55 wherein said first functional verification system comprises a hardware logic verification system.
RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Application Serial No. 60/442,176, filed on Jan. 23, 2003. The contents of U.S. Provisional Application Serial No. 60/442,176 are incorporated herein by reference in their entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60442176 |
Jan 2003 |
US |