Detailed placement with search and repair
First Claim
1. A method for placement of a plurality of cells of a user design on an integrated circuit (IC), the method comprising:
- sending a first placement of the plurality of cells on a plurality of sites on the IC to a satisfiability solver;
by a computer, building a set of timing constraints for the first placement of the plurality of cells, the first placement violating at least one timing constraint in the set of timing constraints;
sending the first placement and the set of timing constraints to a satisfiability solver; and
receiving a second placement that satisfies the set of timing constraints for the plurality of cells from the satisfiability solver.
3 Assignments
0 Petitions
Accused Products
Abstract
A method of detailed placement for ICs is provided. The method receives an initial placement and iteratively builds sets of constraints for placement of different groups of cells in the IC design and uses a satisfiability solver to resolve placement violations. In some embodiments, the constraints include mathematical expressions that express timing requirements. The method in some embodiments converts the mathematical expressions into Boolean clauses and sends the clauses to a satisfiability solver that is only capable of solving Boolean clauses. In some embodiments, the method groups several cells in the user design and several sites on the IC fabric and uses the satisfiability solver to resolve all placement issues in the group. The satisfiability solver informs placer after each cell is moved to a different site. The method then dynamically builds more constraints based on the new cell placement and sends the constraints to the satisfiability solver.
150 Citations
18 Claims
-
1. A method for placement of a plurality of cells of a user design on an integrated circuit (IC), the method comprising:
-
sending a first placement of the plurality of cells on a plurality of sites on the IC to a satisfiability solver; by a computer, building a set of timing constraints for the first placement of the plurality of cells, the first placement violating at least one timing constraint in the set of timing constraints; sending the first placement and the set of timing constraints to a satisfiability solver; and receiving a second placement that satisfies the set of timing constraints for the plurality of cells from the satisfiability solver. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for placement of a plurality of cells of a user design on an integrated circuit (IC), the method comprising:
-
by a computer, building a plurality of timing constraints for placement of the plurality of cells on a plurality of sites on the IC, wherein building the plurality of timing constraints comprises; making a table lookup to determine a path between each corresponding pair of source and destination cells in the plurality of cells; determining a delay for a signal to travel through each determined path from the source cell to the corresponding destination cell; and building a timing constraint to ensure that a required time of the signal at an input of the destination cell is greater than or equal to an arrival time of the signal at an output of the source cell plus the determined delay for the signal to travel through the path between the source and destination cells; sending the plurality of timing constraints to a satisfiability solver; when there is a placement solution that satisfies the plurality of timing constraints, receiving the placement solution as the placement for the plurality of cells; and when there is no placement solution that satisfies the plurality of timing constraints, receiving an identification of a set of constraints in the plurality of timing constraints that made the plurality of timing constraints unsatisfiable.
-
-
8. A non-transitory machine readable medium storing a program for placement of a plurality of cells of a user design on an integrated circuit (IC), the program executable by at least one processing unit, the program comprising:
-
a set of instructions for building a set of timing constraints for placement of the plurality of cells on a plurality of sites on the IC; a set of instructions for sending the set of timing constraints to a satisfiability solver; a set of instructions for receiving a placement that satisfies the set of timing constraints for the plurality of cells from the satisfiability solver wherein the set of timing constraints is a first set of timing constraints; a set of instructions for determining after receiving the placement that satisfies the first set of timing constraints, whether a set of user design goals for a set of user design clock domains are satisfied; a set of instructions for increasing a target frequency of at least one user design clock domain when the set of user design goals for the set of user design clock domains are not satisfied; a set of instructions for building a second set of timing constraints based on the increased target frequency; a set of instructions for sending the second set of timing constraints to the satisfiability solver; and a set of instructions for receiving a placement for the plurality of cells from the satisfiability solver that satisfies the second set of timing constraints built based on the increased target frequency. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A non-transitory computer readable medium storing a program for placement of a plurality of cells of a user design on an integrated circuit (IC), the program executable by at least one processing unit, the program comprising:
-
a set of instructions for sending a first placement of the plurality of cells on a plurality of sites on the IC to a satisfiability solver; a set of instructions for building a set of timing constraints for the first placement of the plurality of cells, the first placement violating at least one timing constraint in the set of timing constraints; a set of instructions for sending the first placement and the set of timing constraints to a satisfiability solver; and a set of instructions for receiving a second placement that satisfies the set of timing constraints for the plurality of cells from the satisfiability solver. - View Dependent Claims (14, 15, 16, 17, 18)
-
Specification