IP Library › Granted Patent US 11,106,846
Granted Patent B1
US 11,106,846 · App. 16/208,431 · Granted Aug 31, 2021

Systems and methods for emulation data array compaction

Inventors: Mitchell G. Poplack (San Jose, CA); Yuhei Hayashi (San Jose, CA)
Assignee: CADENCE DESIGN SYSTEMS, INC.
G06F30/33G06F30/327G06F2115/10
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,106,846
App. No.
16/208,431
Granted
Aug 31, 2021
Kind
B1
Abstract

A compaction circuit in an emulation system may store in a data array emulation data that may be read in subsequent emulation steps. For each emulation step, the compaction circuit may receive keeptags from a local control store word of the emulation step and store portions of emulation data identified by the keeptags. The keeptags in the control store words may be inserted by a compiler based upon whether a corresponding read port of emulation processor reads the stored data in the subsequent steps. The compaction circuit may also translate the logical read address of the stored data to a physical read address in the shared data array. A dynamic modification engine may enable dynamic modification of netlists while using the compacted data array. In response to a request, the dynamic modification engine may modify one or more keeptags and update read addresses in the control store words.

Claims (51)

1. A method of compacting data in a logic emulator comprising:

generating, by an emulation processor cluster in the logic emulator, a set of data be stored in a shared data array at an emulation step of emulating a device under test;

extracting, by a compaction circuit in the logic emulator, a set of keeptags added to a control store word corresponding to the emulation step and added by a compiler during a compilation of the device under test;

generating, by the compaction circuit, a set of compacted data comprising bits in the set of data as identified by the set of keeptags;

calculating, by the compaction circuit, physical addresses in the shared data array for the set of compacted data;

writing, by the compaction circuit, the set of compacted data at the corresponding physical addresses in a shared memory array; and

reading, by at least one emulation processor in the emulation processor cluster, at least one bit of the set of compacted data stored in the shared data array in a subsequent emulation step.

2. The method according to claim 1 , wherein the compaction circuit is associated with a first emulation processor in the emulation processor cluster, the method further comprising:

generating, by the compaction circuit, a first subset of compacted data for a first read port of the first emulation processor; and

generating, by the compaction circuit, a second subset of compacted data for a second read port of the first emulation processor, wherein the first and second subsets of compacted data form the set of compacted data.

3. The method according to claim 1 , wherein the compaction circuit is associated with a first emulation processor in the emulation processor cluster, the method further comprising:

generating, by the compaction circuit, a first subset of compacted data for a first pair of read ports of the first emulation processor; and

generating, by the compaction circuit, a second subset of compacted data for a second pair of read ports of the first emulation processor, wherein the first and second subsets of compacted data form the set of compacted data.

4. The method according to claim 1 , wherein the set of data includes data received from outside of the emulation processor cluster.

5. The method according to claim 1 , wherein calculation of physical addresses in the shared data array for the set of compacted data comprises:

incrementing, by the compaction circuit, an existing physical address by one for each of the asserted keeptags.

6. The method according to claim 1 , wherein the set of data includes 16 bits.

7. The method according to claim 1 , wherein the set of keeptags includes 32 bits.

8. The method according to claim 1 , further comprising:

writing, by the compaction circuit, the set of compacted data at the corresponding physical addresses in the shared memory array in response to the compaction circuit determining that the set of compacted data is 16 bits long.

9. The method according to claim 1 , further comprising:

writing, by the compaction circuit, the set of compacted data at the corresponding physical addresses in the shared memory array in response to the compaction circuit determining that a timer has expired.

10. The method according to claim 1 , further comprising:

receiving, by the compaction circuit, a second set of data from an uncompacted data array at a resumption of emulation steps after stoppage; and

generating, by the compaction circuit, a second set of compacted data from the second set of data.

11. A logic emulator comprising:

an emulation processor cluster configured to generate a set of data to be stored in a shared data array at an emulation step of emulating a device under test;

a compaction circuit configured to:

extract a set of keeptags added to a control store word corresponding to the emulation step and added by a compiler during a compilation of the device under test;

generate a set of compacted data comprising bits in the set of data as identified by the set of keeptags;

calculate physical addresses in the shared data array for the set of compacted data;

write the set of compacted data at the corresponding physical addresses in a shared memory array; and

at least one emulation processor of the emulation processor cluster configured to read at least one bit of the set of compacted data stored in the shared data array in a subsequent emulation step.

12. The logic emulator according to claim 11 , wherein the compaction circuit is associated with a first emulation processor in the emulation processor cluster and further configured to:

generate a first subset of compacted data for a first read port of the first emulation processor; and

generate a second subset of compacted data for a second read port of the first emulation processor, wherein the first and second subsets of compacted data form the set of compacted data.

13. The logic emulator according to claim 11 , wherein the compaction circuit is associated with a first emulation processor in the emulation processor cluster and further configured to:

generate a first subset of compacted data for a first pair of read ports of the first emulation processor; and

generate a second subset of compacted data for a second pair of read ports of the first emulation processor, wherein the first and second subsets of compacted data form the set of compacted data.

14. The logic emulator according to claim 11 , wherein the set of data includes data received from outside of the emulation processor cluster.

15. The logic emulator according to claim 11 , wherein to calculate of physical addresses in the shared data array for the set of compacted data, the compaction circuit is further configured to:

increment an existing physical address by one for each of the asserted keeptags.

16. The logic emulator according to claim 11 , wherein the set of data includes 16 bits.

17. The logic emulator according to claim 11 , wherein the set of keeptags includes 32 bits.

18. The logic emulator according to claim 11 , wherein the compaction circuit is further configured to:

write the set of compacted data at the corresponding physical addresses in the shared memory array in response to the compaction circuit determining that the set of compacted data is 16 bits long.

19. The logic emulator according to claim 11 , wherein the compaction circuit is further configured to:

write the set of compacted data at the corresponding physical addresses in the shared memory array in response to the compaction circuit determining that a timer has expired.

20. The logic emulator according to claim 11 , wherein the compaction circuit is further configured to:

receive a second set of data from an uncompacted data array at a resumption of emulation steps after stoppage; and

generate a second set of compacted data from the second set of data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 3, 2018
From: POPLACK, MITCHELL G.; HAYASHI, YUHEI
To: CADENCE DESIGN SYSTEMS, INC.
Reel/Frame 047663/0399 →