# US 12,182,613 B1 · Systems and methods for exporting design data using near-optimal multi-threading scheme

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,613 B1
- Document ID: US12182613B1
- Status: Granted
- Kind: B1
- Application number: 17/245,506
- Filed: 2021-04-30
- Granted: 2024-12-31
- Earliest claimed: 2021-04-30
- Assignees: Cadence Design Systems, Inc.
- Applicants: Cadence Design Systems, Inc.
- Inventors: Chandra Prakash Manglani; Amit Khurana; Sunil Prasad Todi
- Web page: https://patentgrep.com/patent/US12182613B1

## CPC

- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 30/31: Design entry, e.g. editors specifically adapted for circuit design
- G06F 2111/02: CAD in a network environment, e.g. collaborative CAD or distributed simulation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for generating a single design data file may include a processor and a memory. The processor may obtain design data including a plurality of design units. The processor may determine a first order of the plurality of design units. The processor may translate each of the plurality of design units into a corresponding file fragment by executing multiple threads of a first process. The processor may aggregate each of the plurality of file fragments into the single design data file in the first order by executing a second process in parallel to the first process.

## Claims

### Claim 1

A method of generating a design data file, comprising:
obtaining, by a computer, design data including a plurality of design units;
determining, by the computer, a first order of the plurality of design units;
translating, by the computer, each of the plurality of design units into a corresponding file fragment by executing multiple threads of a first process;
aggregating, by the computer, each of the plurality of file fragments into a design data file in the first order by executing a second process in parallel to the first process; and
storing, by the computer, the design data file into a non-transitory machine-readable memory configured to store a plurality of design data files, in response to the computer determining that each file fragment for an entirety of the plurality of file fragments has been aggregated into the design data file in the first order.

### Claim 2 (depends on 1)

The method according to claim 1, wherein:
translating, by the computer, each design unit includes storing the corresponding file fragment in a memory-mapped disk, and
aggregating, by the computer, each file fragment includes reading the corresponding file fragment from the memory-mapped disk.

### Claim 3 (depends on 2)

The method according to claim 2, wherein aggregating each file fragment includes:
determining, by the computer, that a particular file fragment has been aggregated into the design data file; and
in response to the determining, deleting, by the computer, the particular file fragment from the memory-mapped disk by executing the second process.

### Claim 4 (depends on 1)

The method according to claim 1, wherein the design data file has a first data format different from a second data format of the design data.

### Claim 5 (depends on 1)

The method according to claim 1, wherein the design data has a hierarchical data format and the design data file has a binary data format.

### Claim 6 (depends on 1)

The method according to claim 1, wherein translating each design unit includes:
executing, by the computer, a first thread of the multiple threads that translates a first portion of the plurality of design units into corresponding file fragments in an order consistent with the first order; and
executing, by the computer, in parallel to the first thread, a second thread of the multiple threads that translates a second portion of the plurality of design units into corresponding file fragments in the order consistent with the first order.

### Claim 7 (depends on 1)

The method according to claim 1, wherein aggregating each file fragment includes:
determining, by the computer, that the entirety of the plurality of file fragments have been aggregated into the design data file in the first order.

### Claim 8

A system for generating a design data file, the system comprising:
a memory comprising non-transitory machine-readable storage; and
a processor configured to:
obtain design data including a plurality of design units;
determine a first order of the plurality of design units;
translate each of the plurality of design units into a corresponding file fragment by executing multiple threads of a first process;
store each file fragment into the memory;
aggregate each of the plurality of file fragments into a design data file in the first order by executing a second process in parallel to the first process; and
store the design data file into a second non-transitory machine-readable memory configured to store a plurality of design data files, in response to the computer determining that each file fragment for an entirety of the plurality of file fragments has been aggregated into the design data file in the first order.

### Claim 9 (depends on 8)

The system according to claim 8, wherein the memory comprises a memory-mapped disk;
wherein in translating each design unit, the processor is configured to store the corresponding file fragment into the memory-mapped disk; and
wherein in aggregating each file fragment, the processor is configured to read the corresponding file fragment from the memory-mapped disk.

### Claim 10 (depends on 9)

The system according to claim 9, wherein in aggregating each file fragment, the processor is configured to:
determine that a particular file fragment has been aggregated into the design data file; and in response to the determining, delete the particular file fragment from the memory-mapped disk by executing the second process.

### Claim 11 (depends on 8)

The system according to claim 8, wherein the design data file has a first data format different from a second data format of the design data.

### Claim 12 (depends on 8)

The system according to claim 8, wherein the design data has a hierarchical data format, and wherein the design data file has a binary data format.

### Claim 13 (depends on 8)

The system according to claim 8, wherein in translating each design unit, the processor is configured to:
execute a first thread of the multiple threads that translates a first portion of the plurality of design units into corresponding file fragments in an order consistent with the first order; and
execute, in parallel to the first thread, a second thread of the multiple threads that translates a second portion of the plurality of design units into corresponding file fragments in the order consistent with the first order.

### Claim 14 (depends on 8)

The system according to claim 8, further comprising a second memory comprising the second non-transitory machine-readable storage configured to store the plurality of design data files, and wherein in aggregating each file fragment, the processor is configured to:
determine that the entirety of the plurality of file fragments have been aggregated into the design data file in the first order.

### Claim 15

A non-transitory computer readable medium storing program instructions configured to be executed by one or more processors to:
obtain design data including a plurality of design units;
determine a first order of the plurality of design units;
translate each of the plurality of design units into a corresponding file fragment by executing multiple threads of a first process;
aggregate each of the plurality of file fragments into a design data file in the first order by executing a second process in parallel to the first process; and
store the design data file into a non-transitory machine-readable memory configured to store a plurality of design data files, in response to the computer determining that each file fragment for an entirety of the plurality of file fragments has been aggregated into the design data file in the first order.

### Claim 16 (depends on 15)

The non-transitory computer readable medium according to claim 15, wherein the program instructions are further configured to be executed by the one or more processors to:
translate each design unit includes storing the corresponding file fragment in a memory-mapped disk, and
aggregate each file fragment includes reading the corresponding file fragment from the memory-mapped disk.

### Claim 17 (depends on 16)

The non-transitory computer readable medium according to claim 16, wherein in aggregating each file fragment, wherein the program instructions are further configured to be executed by the one or more processors to:
determine that a particular file fragment has been aggregated into the design data file; and
in response to the determining, delete the particular file fragment from the memory-mapped disk by executing the second process.

### Claim 18 (depends on 15)

The non-transitory computer readable medium according to claim 15, wherein the design data has a hierarchical data format and the design data file has a binary data format.

### Claim 19 (depends on 15)

The non-transitory computer readable medium according to claim 15, wherein in translating each design unit, wherein the program instructions are further configured to be executed by the one or more processors to:
execute a first thread of the multiple threads that translates a first portion of the plurality of design units into corresponding file fragments in an order consistent with the first order; and
execute, in parallel to the first thread, a second thread of the multiple threads that translates a second portion of the plurality of design units into corresponding file fragments in the order consistent with the first order.

### Claim 20 (depends on 15)

The non-transitory computer readable medium according to claim 15, wherein in aggregating each file fragment, wherein the program instructions are further configured to be executed by the one or more processors to:
determine that the entirety of the plurality of file fragments have been aggregated into the design data file in the first order.
