Grouping cells in cell library based on iterative clustering
AssigneeCadence Design Systems, Inc.
InventorsZhuo Li, Natarajan Viswanathan, Vitor Bandeira, Yi-Xiao Ding
Life of this patent
Estimating the term…
Abstract
Various embodiments provide for grouping cells in a cell library based on iterative clustering, which can be used for pruning the cell library. In particular, various embodiments provide for grouping cells in a cell library based on iterative clustering in view of a criterion (or cell attribute), and for pruning of the cell library based on the grouping of cells, which can optimize the cell library for the criterion. For instance, some embodiments provide for grouping cells in a cell library based on iterative clustering in view of leakage power and then applying cell library pruning to optimize for cell leakage power.
Claims20
A non-transitory computer-readable medium comprising instructions that, when executed by a hardware processor of a device, cause the device to perform operations comprising:
- accessing cell library data describing a plurality of cells available for use in a circuit design;
- generating a set of leakage power-based weights corresponding to the plurality of cells by determining an individual leakage power-based weight for each individual cell, in the plurality of cells, based on a leakage-power parameter of the individual cell;
- determining a plurality of cell groups by iteratively clustering cells within the plurality of cells into one or more cell groups based on a set of clustering process inputs until each cell group in the plurality of cell groups is valid, the set of clustering process inputs including the set of leakage power-based weights, the iteratively clustering of cells into the one or more cell groups comprising:
- setting a current set of cells that is to be grouped to comprise the plurality of cells, setting a current target cluster number to a number of cells in the current set of cells, and iteratively performing the following operations while a size of the current set of cells is greater than one cell;
- determining a current set of cell groups by clustering cells within the current set of cells into the one or more cell groups based on the current target cluster number and the set of clustering process inputs:
- determining whether each cell group in the current set of cell groups is valid:
- in response to determining that the one or more cell groups in the current set of cell groups are invalid, adjusting the current target cluster number, and generating a pruned set of cells by pruning a select set of cells from each cell group in the plurality of cell groups.
A method comprising:
- accessing, by a hardware processor, cell library data describing a plurality of cells available for use in a circuit design;
- generating, by the hardware processor, a set of metrics corresponding to the plurality of cells by determining a metric for each individual cell, in the plurality of cells, based on an attribute of the individual cell;
- determining, by the hardware processor, a plurality of cell groups by iteratively clustering cells within the plurality of cells into one or more cell groups based on a set of clustering process inputs until each cell group in the plurality of cell groups is valid, the set of clustering process inputs including the set of metrics, the iteratively clustering of cells into the one or more cell groups comprising:
- setting a current set of cells that is to be grouped to comprise the plurality of cells;
- setting a current target cluster number to a number of cells in the current set of cells;
- and
- iteratively performing the following operations while a size of the current set of cells is greater than one cell:
- determining a current set of cell groups by clustering cells within the current set of cells into the one or more cell groups based on the current target cluster number and the set of clustering process inputs;
- determining whether each cell group in the current set of cell groups is valid;
- and
- in response to determining that the one or more cell groups in the current set of cell groups are invalid, adjusting the current target cluster number;
- and
- generating, by the hardware processor, a pruned set of cells by pruning a select set of cells from each cell group in the plurality of cell groups.
A device comprising:
- a memory storing instructions;
- and
- a hardware processor communicatively coupled to the memory and configured by the instructions to perform operations comprising:
- generating a set of metrics corresponding to a plurality of cells available for use in a circuit design, the generating comprising determining a metric for each individual cell, in the plurality of cells, based on an attribute of the individual cell, the plurality of cells being described by cell library data;
- determining, by the hardware processor, a plurality of cell groups by iteratively clustering cells within the plurality of cells into one or more cell groups based on a set of clustering process inputs until each cell group in the plurality of cell groups is valid, the set of clustering process inputs including the set of metrics, the iteratively clustering of cells into the one or more cell groups comprising:
- setting a current set of cells that is to be grouped to comprise the plurality of cells;
- setting a current target cluster number to a number of cells in the current set of cells;
- and
- iteratively performing the following operations while a size of the current set determining a current set of cell groups by clustering cells within the current set of cells into the one or more cell groups based on the current target cluster number and the set of clustering process inputs;
- determining whether each cell group in the current set of cell groups is valid;
- and
- in response to determining that the one or more cell groups in the current set of cell groups are invalid, adjusting the current target cluster number;
- and
- generating a pruned set of cells by pruning a select set of cells from each cell group in the plurality of cell groups.
Dependencies are inferred from the claim text.