# US 11,907,634 B2 · Automating addition of power supply rails, fences, and level translators to a modular circuit design

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

- Number: US 11,907,634 B2
- Document ID: US11907634B2
- Status: Granted
- Kind: B2
- Application number: 17/464,262
- Filed: 2021-09-01
- Published: 2023-03-09
- Granted: 2024-02-20
- Earliest claimed: 2021-09-01
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Gavin B. Meil; Kilaus-Dieter Schubert; Benedikt Geukes; Stephen John Barnfield; Maya Safieddine
- Web page: https://patentgrep.com/patent/US11907634B2

## CPC

- G06F 30/396: Clock trees
- G06F 1/06: Clock generators producing several clock signals {(G06F1/08 - G06F1/14 take precedence)}
- G06F 1/10: Distribution of clock signals {, e.g. skew}
- G06F 1/26: Power supply means, e.g. regulation thereof (for memories G11C)
- G06F 30/3947: global
- G06F 2119/06: Power analysis or power optimisation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A specification for a modular circuit design includes a mapping from global clock domains to global voltage domains. A processor assigns, to a first instance of a clocked primitive component, a global voltage domain based on which global clock domain clocks the first instance, automatically adds, to the modular circuit design, first power supply rails to power the first instance, and connects the first power supply rails from the first instance to a first power supply for a first global voltage domain. The processor assigns, to a second instance of the clocked primitive component, a second global voltage domain based on which global clock domain clocks the second instance, automatically adds second power supply rails to power the second instance, and connects the second power supply rails to a second power supply for a second global voltage domain. The processor may perform further processing on the updated modular circuit design.

## Claims

### Claim 1

A method for automatically adding power supply rails to a modular circuit design, the method comprising:
a processor receiving design data describing an input modular circuit design including a plurality of hierarchically arranged module instances and receiving an input specification for the modular circuit design, wherein the input specification includes a mapping from global clock domains to global voltage domains;
the processor assigning, to a first instance of a clocked primitive component in the modular circuit design, a global voltage domain based on which global clock domain clocks the first instance of the clocked primitive component;
the processor automatically adding, to the modular circuit design, first power supply rails to power the first instance of the clocked primitive component and connecting the first power supply rails from the first instance of the clocked primitive component to a first power supply for a first global voltage domain of the modular circuit design;
the processor assigning, to a second instance of the clocked primitive component, a second global voltage domain based on which global clock domain clocks the second instance of the clocked primitive component;
the processor automatically adding, to the modular circuit design, second power supply rails to power the second instance of the clocked primitive component and connecting the second power supply rails from the second instance of the clocked primitive component to a second power supply for the second global voltage domain of the modular circuit design; and
the processor further processing an output modular circuit design including the first and second power supply rails.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first global voltage domain and the second global voltage domain are different voltage domains.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
the processor splitting one of the first and second power supply rails based on a mapping to a single global voltage domain at both the first and second instances being precluded.

### Claim 4 (depends on 1)

The method of claim 1, wherein further processing the output modular circuit design includes storing, in data storage, output design files describing the modular circuit design.

### Claim 5

A method for automatically inserting a component into a modular circuit design to satisfy one or more clock domain crossing constraints, the method comprising:
a processor receiving a global constraint list for crossings between global clock domains within a modular circuit design including a plurality of hierarchically arranged instances of modules;
the processor creating a local constraint list for crossings between local clock domains of a module in the modular circuit design based on a first mapping from local clock domains to global clock domains at a first instance of the module;
the processor modifying the local constraint list based on a second mapping from local clock domains to global clock domains at a second instance of the module, such that the resulting local constraint list satisfies the global constraint list at both the first instance and the second instance of the module;
the processor classifying component pins and ports of the module into clock domains in a manner to satisfy the local constraint list;
the processor automatically inserting into the modular circuit design a component at a pin at which a crossing occurs between different clock domains in order to satisfy the local constraint list; and
the processor further processing an output modular circuit design as updated by the inserting.

### Claim 6 (depends on 5)

The method of claim 5, wherein the component comprises a fence.

### Claim 7 (depends on 5)

The method of claim 5, wherein the component comprises a voltage level translator.

### Claim 8 (depends on 5)

The method of claim 5, further comprising the processor cloning a non-clocked primitive component specified in the modular circuit design to satisfy the local constraint list.

### Claim 9 (depends on 5)

The method of claim 5, wherein the further processing includes storing, in data storage, output design files describing the output modular circuit design.

### Claim 10

A program product for automatically adding power supply rails to a modular circuit design, the program product comprising:
a storage device; and
program instructions within the storage device that, when executed by a processor, cause the processor to perform:
receiving design data describing an input modular circuit design including a plurality of hierarchically arranged module instances and receiving an input specification for the modular circuit design, wherein the input specification includes a mapping from global clock domains to global voltage domains;
assigning, to a first instance of a clocked primitive component in the modular circuit design, a global voltage domain based on which global clock domain clocks the first instance of the clocked primitive component;
automatically adding, to the modular circuit design, first power supply rails to power the first instance of the clocked primitive component and connecting the first power supply rails from the first instance of the clocked primitive component to a first power supply for a first global voltage domain of the modular circuit design;
assigning, to a second instance of the clocked primitive component, a second global voltage domain based on which global clock domain clocks the second instance of the clocked primitive component;
automatically adding, to the modular circuit design, second power supply rails to power the second instance of the clocked primitive component and connecting the second power supply rails from the second instance of the clocked primitive component to a second power supply for the second global voltage domain of the modular circuit design; and
further processing an output modular circuit design including the first and second power supply rails.

### Claim 11 (depends on 10)

The program product of claim 10, wherein the first global voltage domain and the second global voltage domain are different voltage domains.

### Claim 12 (depends on 10)

The program product of claim 10, wherein the instructions, when executed, further cause the processor to perform:
splitting one of the first and second power supply rails based on a mapping to a single global voltage domain at both the first and second instances being precluded.

### Claim 13 (depends on 10)

The program product of claim 10, wherein further processing the output modular circuit design includes storing, in data storage, output design files describing the modular circuit design.

### Claim 14

A program product for automatically inserting a component into a modular circuit design to satisfy clock constraints, the program product comprising:
a storage device; and
program instructions within the storage device that, when executed by a processor, cause the processor to perform:
receiving a global constraint list for crossings between global clock domains within a modular circuit design including a plurality of hierarchically arranged instances of modules;
creating a local constraint list for crossings between local clock domains of a module in the modular circuit design based on a first mapping from local clock domains to global clock domains at a first instance of the module;
modifying the local constraint list based on a second mapping from local clock domains to global clock domains at a second instance of the module, such that the resulting local constraint list satisfies the global constraint list at both the first instance and the second instance of the module;
classifying component pins and ports of the module into clock domains in a manner to satisfy the local constraint list;
automatically inserting into the modular circuit design a component at a pin at which a crossing occurs between different clock domains in order to satisfy the local constraint list; and
further processing an output modular circuit design as updated by the inserting.

### Claim 15 (depends on 14)

The program product of claim 14, wherein the component comprises a fence.

### Claim 16 (depends on 14)

The program product of claim 14, wherein the component comprises a voltage level translator.

### Claim 17 (depends on 14)

The program product of claim 14, wherein the program code further causes the processor to perform:
cloning a non-clocked primitive component specified in the modular circuit design to satisfy the local constraint list.

### Claim 18 (depends on 14)

The program product of claim 14, wherein the further processing includes storing, in data storage, output design files describing the output modular circuit design.

### Claim 19

A data processing system, comprising:
a processor; and
a storage device communicatively coupled to the processor, wherein the storage device includes program instructions that, when executed by the processor, cause the processor to perform:
receiving design data describing an input modular circuit design including a plurality of hierarchically arranged module instances and receiving an input specification for the modular circuit design, wherein the input specification includes a mapping from global clock domains to global voltage domains;
assigning, to a first instance of a clocked primitive component in the modular circuit design, a global voltage domain based on which global clock domain clocks the first instance of the clocked primitive component;
automatically adding, to the modular circuit design, first power supply rails to power the first instance of the clocked primitive component and connecting the first power supply rails from the first instance of the clocked primitive component to a first power supply for a first global voltage domain of the modular circuit design;
assigning, to a second instance of the clocked primitive component, a second global voltage domain based on which global clock domain clocks the second instance of the clocked primitive component;
automatically adding, to the modular circuit design, second power supply rails to power the second instance of the clocked primitive component and connecting the second power supply rails from the second instance of the clocked primitive component to a second power supply for a second global voltage domain of the modular circuit design; and
further processing an output modular circuit design including the first and second power supply rails.

### Claim 20 (depends on 19)

The data processing system of claim 19, wherein the first global voltage domain and the second global voltage domain are different voltage domains.

### Claim 21 (depends on 19)

The data processing system of claim 19, wherein the instructions, when executed, further cause the processor to perform:
splitting one of the first and second power supply rails based on a mapping to a single global voltage domain at both the first and second instances being precluded.

### Claim 22 (depends on 19)

The data processing system of claim 19, wherein the instructions, when executed, further cause the processor to perform:
receiving a global constraint list for crossings between global clock domains within a modular circuit design including a plurality of hierarchically arranged instances of modules;
creating a local constraint list for crossings between local clock domains of a module in the modular circuit design based on a first mapping from local clock domains to global clock domains at a first instance of the module;
modifying the local constraint list based on a second mapping from local clock domains to global clock domains at a second instance of the module, such that the resulting local constraint list satisfies the global constraint list at both the first instance and the second instance of the module;
classifying component pins and ports of the module into clock domains in a manner to satisfy the local constraint list; and
automatically inserting into the modular circuit design a component at a pin at which a crossing occurs between different clock domains in order to satisfy the local constraint list.

### Claim 23 (depends on 22)

The data processing system of claim 22, wherein the component comprises a fence.

### Claim 24 (depends on 22)

The data processing system of claim 22, wherein the component comprises a voltage level translator.

### Claim 25 (depends on 22)

The data processing system of claim 22, wherein the instructions, when executed, cause the processor to perform:
cloning a non-clocked primitive component specified in the modular circuit design to satisfy the local constraint list.
