IP Library Granted Patent US 12682141
Granted Patent B2
US 12682141 · App. 18/318,615 · Granted Jul 14, 2026

Scalable, optimal retiming of multi-clocked netlists

Inventors: Jason Raymond Baumgartner (Austin, TX); Rohit Dureja (Austin, TX); Raj Kumar Gajavelly (Warangal, IN); Robert Lowell Kanzelman (Rochester, MN)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F30/323G06F2119/12
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 12682141
App. No.
18/318,615
Granted
Jul 14, 2026
Kind
B2
Abstract

Embodiments of the present disclosure provide enhanced systems and methods for implementing enhanced retiming of multiple clock netlists to improve integrated circuit (IC) design quality and provide enhanced retiming with reduced retiming runtime. Disclosed embodiments provide effective and efficient retiming without sacrificing netlist quality, and yield significant speedup of retiming runtime over traditional retiming.

Claims (47)

1 . A method comprising:

importing a netlist for a given integrated circuit (IC) design; the netlist comprising clock domain information for multiple clock domains;

partitioning the netlist into regions with identically clocked registers to create a clock domain partition and a free-running partition for each of the multiple clock domains;

identifying selected clock domains of the multiple clock domains in the netlist as free-running domains;

identifying two compatible clock domains based on at least one of symbolic constant registers or free-running domains, and arbitrarily-clocked registers;

combining the two compatible clock domains to generate at least one of a combined clock domain and free running partition or a combined symbolic-constant register and arbitrarily-clocked partition;

creating a respective retiming graph for each of the at least one of the combined clock domain and free running partition or the combined symbolic-constant register and arbitrarily-clocked partition and for each clock domain partition of the multiple clock domains modeling at least one clock domain partition as a hypergraph node;

retiming the respective retiming graphs using a retiming solver, atomically retiming each hypergraph node, to provide a retiming result; and

forming, based on the retiming result, a behaviorally equivalent retimed netlist of the imported netlist.

2 . The method of claim 1 , wherein the imported netlist comprises a normalized netlist with implicitly clocked register primitives comprising a single clock and a next-state function.

3 . The method of claim 1 , further comprises combining compatible domains depending upon free-running registers and symbolic-constant registers and arbitrarily-clocked registers with a free-running partition.

4 . The method of claim 1 , further comprises enabling hybrid free-running and domain-based retiming to allow relocating free running registers across domain-partitions; and to allow relocating free-running registers within a clock domain-partition, defining the clock domain-partition as free-running.

5 . The method of claim 1 , further comprises retiming a respective symbolic constant retiming graph for a symbolic constant register partition to relocate source symbolic constant registers closer to a symbolic constant register output sink, to reduce a symbolic constant register count, and to reduce circuit wire-length for a retimed symbolic constant register partition.

6 . The method of claim 1 , wherein creating the respective retiming graph further comprises creating a symbolic constant retiming graph for a symbolic constant register partition, and removing symbolic constant fanout edges from the symbolic constant retiming graph; and retiming the symbolic constant retiming graph replacing each retimed symbolic constant register by its initial-value.

7 . The method of claim 1 , wherein forming, based on the retiming result, the behaviorally equivalent retimed netlist further comprises associating original symbolic constant registers with retimed symbolic constant registers and mapping an initial value for the original symbolic constant registers to a behaviorally equivalent initial value for the retimed symbolic constant registers.

8 . The method of claim 1 , further comprises converting selected clocked registers to free-running registers for one or more selected logic regions in the netlist to enable increased free-running retiming register count reduction.

9 . The method of claim 1 , further comprises identifying peripheral inputs having combinational fanout only to registers of a single clock domain; combining the inputs into the single clock domain; partitioning the identified inputs and combinational logic between the inputs and the registers of the single clock domain into a single clock domain netlist partition; creating a retiming graph for the single clock domain netlist partition and performing peripheral retiming of the retiming graph for the single clock domain netlist partition using a retiming solver for the single clock domain netlist partition to provide a retiming result.

10 . The method of claim 1 , wherein forming, based on the retiming result, the behaviorally equivalent retimed netlist further comprises identifying a set of gates on a boundary between combined domains; identifying a subset of the boundary gates that are lagged; replicating the combinational logic between the lagged boundary gates and retimed registers in a fanin of the lagged boundary gates; and connecting replicated logic to a clocked next-state function of the retimed registers.

11 . A system, comprising:

a processor; and

a memory, wherein the memory includes a computer program product configured to perform operations to implement retiming of multi-clocked netlists, the operations comprising:

importing a netlist for a given integrated circuit (IC) design; the netlist comprising clock domain information for multiple clock domains;

partitioning the netlist into regions with identically clocked registers to create a clock domain partition and a free-running partition for each of the multiple clock domains;

identifying selected clock domains of the multiple clock domains in the netlist as free-running domains;

identifying two compatible clock domains based on at least one of symbolic constant registers or free-running domains, and arbitrarily-clocked registers;

combining the two compatible clock domains to generate at least one of a combined clock domain and free running partition or a combined symbolic-constant register and arbitrarily-clocked partition;

creating a respective retiming graph for each of the at least one of the combined clock domain and free running partition or the combined symbolic-constant register and arbitrarily-clocked partition and for each clock domain partition of the multiple clock domains modeling at least one clock domain partition as a hypergraph node;

retiming the respective retiming graphs using a retiming solver, atomically retiming each hypergraph node, to provide a retiming result; and

forming, based on the retiming result, a behaviorally equivalent retimed netlist of the imported netlist.

12 . The system of claim 11 , wherein the imported netlist comprises a normalized netlist with implicitly clocked register primitives comprising a single clock and a next-state function.

13 . The system of claim 11 , further comprises identifying inputs having combinational fan-out only to registers of a single clock domain; combining the inputs into the single clock domain; and providing the inputs and combinational logic between the inputs and the registers of the single clock domain into a single clock domain netlist partition.

14 . The system of claim 13 , further comprises creating a retiming graph for the single clock domain netlist partition and performing peripheral retiming of the retiming graph for the single clock domain netlist partition using a retiming solver to provide a retiming result.

15 . The system of claim 11 , wherein retiming the respective retiming graph further comprises identifying a symbolic constant retiming graph for a symbolic constant register partition; and retiming the symbolic constant retiming graph using a retiming solver to provide a retiming result.

16 . A computer program product to implement retiming of multi-clocked netlists, the computer program product comprising:

a computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code executable by one or more computer processors to perform an operation comprising:

importing a netlist for a given integrated circuit (IC) design; the netlist comprising clock domain information for multiple clock domains;

partitioning the netlist into regions with identically clocked registers to create a clock domain partition and a free-running partition for each of the multiple clock domains;

identifying selected clock domains of the multiple clock domains in the netlist as free-running domains;

identifying two compatible clock domains based on at least one of symbolic constant registers or free-running domains, and arbitrarily-clocked registers;

combining the two compatible clock domains to generate at least one of a combined clock domain and free running partition or a combined symbolic-constant register and arbitrarily-clocked partition;

creating a respective retiming graph for each of the at least one of the combined clock domain and free running partition or the combined symbolic-constant register and arbitrarily-clocked partition and for each clock domain partition of the multiple clock domains modeling at least one clock domain partition as a hypergraph node;

retiming the respective retiming graphs using a retiming solver, atomically retiming each hypergraph node, to provide a retiming result; and

forming, based on the retiming result, a behaviorally equivalent retimed netlist of the imported netlist.

17 . The computer program product of claim 16 , wherein the imported netlist comprises a normalized netlist with implicitly clocked register primitives having a single clock and a next-state function.

18 . The computer program product of claim 16 , further comprises identifying inputs having combinational fanout only to registers of a single clock domain; combining the inputs into the single clock domain; and partitioning the inputs and combinational logic between the inputs and the registers of the single clock domain into a single clock domain netlist partition.

19 . The computer program product of claim 18 , further comprises creating a retiming graph for the single clock domain netlist partition and performing peripheral retiming of the retiming graph of the single clock domain netlist partition using a retiming solver for the single clock domain netlist partition to provide a retiming result.

20 . The computer program product of claim 16 , wherein creating the respective retiming graph further comprises creating a symbolic constant retiming graph for a symbolic constant register partition, and retiming the symbolic constant retiming graph replacing each retimed original symbolic constant register by its initial-value.