IP Library › Granted Patent US 12,602,215
Granted Patent B1
US 12,602,215 · App. 18/098,597 · Granted Apr 14, 2026

Cloud enabled hardware simulation with smart reuse of historical data

Inventors: Shobhit Shukla (Noida, IN); Amit Kumar (Noida, IN); Mayank Gupta (Mountain View, CA)
Assignee: Synopsys, Inc.
G06F8/48G06F8/36G06F8/41G06F30/33
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 12,602,215
App. No.
18/098,597
Granted
Apr 14, 2026
Kind
B1
Abstract

A method includes receiving, by a processing device, receiving a data file, dividing the data file into a plurality of partitions based on a defined criteria, compiling the plurality of partitions associated with the data file to form a plurality of compiled partitions, generating a status identifier for each of the plurality of partitions, wherein the status identifier reflects a current version of a corresponding partition. The method further includes combining the plurality of compiled partitions to form a first executable file, and storing the plurality of compiled partitions and a corresponding status identifier for each of the plurality of compiled partitions in a first storage area of a first storage medium. The method also includes receiving a request for the data file, identifying that one or more partitions of the plurality of partitions is reusable, and sending the one or more partitions identified as being reusable.

Claims (89)

1 . A method comprising:

receiving, by a processing device, a data file;

dividing the data file into a plurality of partitions based on a defined criteria;

compiling the plurality of partitions associated with the data file to form a plurality of compiled partitions;

generating respective status identifiers for the plurality of compiled partitions, wherein the respective status identifiers reflect respective current versions of the plurality of partitions;

combining the plurality of compiled partitions to form a first executable file; and

storing the plurality of compiled partitions and the respective status identifiers in a first storage area of a first storage medium.

2 . The method of claim 1 , further comprising:

receiving a request for the data file;

identifying that one or more compiled partitions of the plurality of compiled partitions are reusable; and

sending the one or more compiled partitions identified as being reusable, wherein identifying that the one or more compiled partitions of the plurality of compiled partitions is reusable further comprises:

comparing, by the processing device, a first status identifier of one or more partitions in the request with a second status identifier in a version of the one or more compiled partitions stored in the first storage area; and

determining that the first status identifier is same as the second status identifier.

3 . The method of claim 1 , further comprising:

determining, by the processing device, that a first partition has been modified after combining the plurality of compiled partitions;

compiling the first partition to form a first compiled partition; and

combining the first compiled partition with the plurality of compiled partitions to form a second executable file.

4 . The method of claim 3 , wherein determining that the first partition has been modified further comprises:

comparing, by the processing device, a first status identifier in the first partition with a second status identifier in a version of the first compiled partition stored in the first storage area; and

determining that the first status identifier is different from the second status identifier.

5 . The method of claim 3 , further comprising:

storing, by the processing device, the first compiled partition and a respective status identifier for the first compiled partition in the first storage area of the first storage medium.

6 . The method of claim 3 , further comprising:

receiving, by the processing device, one or more second partitions after completion of the compiling;

identifying the one or more second partitions as new partitions;

compiling the one or more second partitions to form one or more second compiled partitions;

generating new status identifiers for the one or more second compiled partitions; and

storing the one or more second compiled partitions and the new status identifiers in the first storage area.

7 . The method of claim 1 , further comprising:

determining, by the processing device, a frequency score for a first compiled partition of the plurality of compiled partitions, wherein the frequency score is based on a frequency of use of the first compiled partition in a determined time;

determining a freshness score for the first compiled partition, wherein the freshness score is based on time elapsed since a most recent use of the first compiled partition;

determining a size score for the first compiled partition, wherein the size score is based on an amount of storage area used by the first compiled partition; and

determining a composite score based on a weighted average of the frequency score, the freshness score, and the size score.

8 . The method of claim 7 , further comprising:

responsive to determining that the composite score is outside of a determined threshold range, deleting, by the processing device, the first compiled partition from the first storage area of the first storage medium.

9 . A non-transitory computer-readable medium storing program instructions executable by a processing device, causing the processing device to perform operations comprising:

receiving a hardware description language (HDL) data file comprising a design for a semiconductor device;

dividing the HDL data file into a plurality of partitions based on a defined criteria;

compiling the plurality of partitions associated with the HDL data file to form a plurality of compiled partitions;

generating respective status identifiers for the plurality of compiled partitions, wherein the respective status identifiers reflect respective current versions of the plurality of partitions;

stitching the plurality of compiled partitions to form a first executable file; and

storing the plurality of compiled partitions and the respective status identifiers in a first storage area of a first storage medium.

10 . The non-transitory computer-readable medium of claim 9 , wherein the instructions further cause the processing device to perform operations comprising:

receiving a request for the HDL data file;

identifying that one or more compiled partitions of the plurality of compiled partitions is reusable; and

sending the one or more compiled partitions identified as being reusable, wherein identifying that the one or more compiled partitions of the plurality of compiled partitions is reusable further comprises:

comparing a first status identifier of one or more partitions in the request with a second status identifier in a version of the one or more compiled partitions stored in the first storage area; and

determining that the first status identifier is same as the second status identifier.

11 . The non-transitory computer-readable medium of claim 9 , wherein the instructions further cause the processing device to perform operations comprising:

determining that a first partition has been modified after combining the plurality of compiled partitions;

compiling the first partition to form a first compiled partition; and

stitching the first compiled partition with the plurality of compiled partitions to form a second executable file.

12 . The non-transitory computer-readable medium of claim 11 , wherein determining that the first partition has been modified further comprises:

comparing a first status identifier in the first partition with a second status identifier in a version of the first compiled partition stored in the first storage area; and

determining that the first status identifier is different from the second status identifier.

13 . The non-transitory computer-readable medium of claim 11 , wherein the instructions further cause the processing device to perform operations comprising:

storing the first compiled partition and a respective status identifier for the first compiled partition in the first storage area of the first storage medium.

14 . The non-transitory computer-readable medium of claim 9 , wherein the instructions further cause the processing device to perform operations comprising:

determining a frequency score for a first compiled partition of the plurality of compiled partitions, wherein the frequency score is based on a frequency of use of the first compiled partition in a determined time;

determining a freshness score for the first compiled partition, wherein the freshness score is based on time elapsed since a most recent use of the first compiled partition;

determining a size score for the first compiled partition, wherein the size score is based on an amount of storage area used by the first compiled partition; and

determining a composite score based on a weighted average of the frequency score, the freshness score, and the size score.

15 . The non-transitory computer-readable medium of claim 14 , wherein the instructions further cause the processing device to perform operations comprising:

responsive to determining that the composite score is outside of a determined threshold range, deleting the first compiled partition from the first storage area of the first storage medium.

16 . A method for reducing cloud storage space used by a hardware description language (HDL) data file, the method comprising:

receiving, by a processing device, the HDL data file comprising a design for a semiconductor device;

dividing the HDL data file into a plurality of partitions based on a defined criteria; compiling the plurality of partitions associated with the HDL data file to form a plurality of compiled partitions;

generating respective status identifiers for the plurality of compiled partitions, wherein the respective status identifiers reflect respective current versions of the plurality of partitions;

stitching the plurality of compiled partitions to form a first executable file; and

storing the plurality of compiled partitions and the respective status identifiers in a first storage area of a first storage medium.

17 . The method of claim 16 , further comprising:

receiving, by the processing device, a request for the HDL data file;

comparing a first status identifier of one or more partitions in the request with a second status identifier in a version of one or more compiled partitions stored in the first storage area; and

determining that the first status identifier is same as the second status identifier;

identifying that one or more compiled partitions of the plurality of compiled partitions is reusable; and

sending the one or more compiled partitions identified as being reusable.

18 . The method of claim 16 , further comprising:

determining, by the processing device, a frequency score for a first compiled partition of the plurality of compiled partitions, wherein the frequency score is based on a frequency of use of the first compiled partition in a determined time;

determining a freshness score for the first compiled partition, wherein the freshness score is based on time elapsed since a most recent use of the first compiled partition;

determining a size score for the first compiled partition, wherein the size score is based on an amount of storage area used by the first compiled partition; and

determining a composite score based on a weighted average of the frequency score, the freshness score, and the size score.

19 . The method of claim 18 , further comprising:

responsive to determining that the composite score is outside of a determined threshold range, deleting, by the processing device, the first compiled partition from the first storage area of the first storage medium.

20 . The method of claim 16 , further comprising:

receiving, by the processing device, one or more second partitions after completion of the compiling;

identifying the one or more second partitions as new partitions;

compiling the one or more second partitions to form one or more second compiled partitions:

generating new status identifiers for the one or more second compiled partitions; and

storing the one or more second compiled partitions and the new status identifiers in the first storage area of the first storage medium.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2023
From: SHUKLA, SHOBHIT; KUMAR, AMIT; GUPTA, MAYANK
To: SYNOPSYS, INC.
Reel/Frame 062432/0949 →
References Cited (3)
US 10794954B1 · Chang · 2020 [cited by examiner]
US 20210218800A1 · Landman · 2021 [cited by examiner]
“Synopsys Datasheet”, Synopsys.com, Oct. 26, 2021. (Year: 2021). [cited by examiner]