Claims
- 1. A method of solving a SAT problem comprising:
partitioning SAT-formula clauses in the SAT problem into a plurality of partitions; and solving each of said plurality of partitions as a separate process each, thereby constituting a plurality of processes where each of said process communicates only with a subset of the plurality of processes.
- 2. The method of claim 1, wherein at least one of said processes runs on a separate processor.
- 3. The method of claim 1, wherein at least one process communicates only with another process with which it shares a variable interface.
- 4. The method of claim 1, wherein one of said plurality of processes is a master process and rest of the plurality of processes are client processes.
- 5. The method of claim 4, wherein the master process controls distributed processing.
- 6. The method of claim 5, wherein the master process determines if any new decision needs to be made and returns a satisfied message if no new decisions need to be made.
- 7. The method of claim 5, wherein the master process returns an unsatisfied message if a determined backtrack level due to a conflict is zero.
- 8. The method of claim 4, wherein the master process maintains and processes learned clauses whose variables span across at least two of said plurality of partitions.
- 9. The method of claim 4, wherein the master process does not maintain an entire circuit information for a circuit corresponding to the SAT problem.
- 10. The method of claim 4, wherein boolean constraint propagation is performed as part of solving the SAT problem using distributed processing.
- 11. The method of claim 10, wherein a process requests an implication without receiving corresponding reply message.
- 12. The method of claim 10, wherein a process delays the processing of replies for which there is no corresponding request information currently available.
- 13. The method of claim 10, wherein the master controls the distributed Boolean constraint propagation comprising:
a) returning no conflict message if a new implication does not exist, else sending the new implication to a corresponding client process; b) en-queuing the new implication in a request queue corresponding to a client process; c) en-queuing all out-of-order reply messages from a first client process into a FIFO queue corresponding to the first client process; d) returning conflict if detected during local Boolean constraint propagation or due to conflict reply message from one or more clients, else returning to step a if the FIFO and the request queues are empty; e) checking for a new reply message if the FIFO or request queue is not empty, if message does not exist proceeding to step l else proceeding to step f; f) decoding a new reply message; g) en-queueing the new reply message in a FIFO queue corresponding to a client process and returning to step e if the FIFO queue corresponding to the client process is not empty; h) checking if a request exists in the corresponding request queue of the client process; i) returning to step g if the reply message is out-of-order; j) removing the request from the corresponding request queue if the corresponding reply message is not out-of-order; k) performing local Boolean constraint propagation and returning to step e; l) checking if any reply message exists at a head of the FIFO queue for a second client process corresponding to a pending request for the second client process, if message exists then going to step m, else returning to step d; and m) removing the pending request and the reply message if the reply message exists in step l, updating request queues for client processes other than said second client process if required, and performing a local Boolean constraint propagation.
- 14. The method of claim 10, wherein each client process participates in the distributed Boolean constraint propagation using a sub-process comprising:
a) performing local Boolean constraint propagation if a new message is an implication request; b) sending a new implication request to neighboring client processes if conflict does not occur; c) sending a reply with antecedents corresponding to implications and best score variable to the master process; and d) sending conflict message if conflict occurs.
- 15. The method of claim 10, wherein the master process performs global conflict analysis on detecting conflict during distributed Boolean constraint propagation using a sub-process comprising:
a) performing conflict analysis using global assignment stack; b) sending learnt local conflict clauses and updated variable scores to respective clients; c) sending backtrack level to the client processes; and d) performing local backtrack.
- 16. The method of claim 4, wherein each client process participates in global conflict analysis using a sub-process comprising:
a) sending best score variable to the master process; b) performing local backtrack on receiving a backtrack request message; c) updating scores on receiving an updated variable score message; and d) adding learnt local conflict clauses on receiving a conflict clause message.
- 17. The method of claim 4, wherein the master process decides on a next variable by choosing best score variables sent by the client processes.
- 18. The method of claim 4, wherein each client process participates in the decision making using a sub-process comprising:
a) maintaining a list of ordered variables local to said each client process; b) sending a best score variable after implication replies to the master process; and c) updating the list when requested.
- 19. The method of claim 15, wherein step d is done after steps a, b, and c.
- 20. The method of claim 16, wherein step a is done before steps b, c, and d.
- 21. A method of claim 4, wherein said process is used for solving a SAT-based Bounded Model Checking (BMC) problem, wherein the master process converts the BMC problem originating from unrolling of a sequential circuit in different time frames into a SAT problem, and each client process is adapted to receive contiguous unrolled time frames.
- 22. The method of claim 21, wherein the master process requests a new unrolling to the client process that received the last unrolled time frame.
- 23. The method of claim 22, wherein the client process accepts the request and unrolls one time frame.
- 24. The method of claim 23, wherein in the client process unrolls additional time frames in advance when available memory is sufficient.
- 25. The method of claim 24, wherein the client process does advance unrolling while the client process is waiting for implication request from the master process.
- 26. The method of claim 22, wherein the client process denies the request when available memory is not sufficient and the master process requests a client that was not requested before.
- 27. The method of claim 21, wherein the master process maintains incremental learnt clauses from previous time frames.
- 28. The method of claim 21, wherein a design is read and required initialization is done in all the client processes a priori.
- 29. A network for solving a SAT problem comprising:
a master process adapted to disjointedly partition a SAT problem into a set of disjoint partitions; and a plurality of client processes, each of said plurality of client processes adapted to receive and solve a separate disjoint partition each from the set of disjoint partitions, where each of said process communicates only with a subset of the plurality of processes.
- 30. The network of claim 29, wherein at least one of said plurality of client processes broadcasts messages related to an implication of said partitioning to the master process and the plurality of client processes.
- 31. The network of claim 29 wherein at least one client process is aware of a topology of the network.
- 32. The network of claim 30, wherein the messages are broadcast to only a subset of client processes from the set of client processes that share at least one partitioning interface with the at least one of said client processes.
- 33. The network of claim 30, wherein communications channels from said at least one of said client processes are restricted to only a subset of the client processes that are nearest neighbors of the least one of said client processes.
- 34. The network of claim 29, wherein the master process is adapted to maintain a FIFO queue where out-of order replies from the plurality of client processes are queued.
- 35. The network of claim 29, wherein at least one process communicates only with another process with which it shares a variable.
- 36. The network of claim 29, wherein the master process controls variable decisions.
- 37. The network of claim 29, wherein the master process maintains and processes learned clauses whose variables span across at least two of said plurality of partitions.
- 38. The network of claim 35, wherein a master process determines if any new decision needs to be made and returns if no new decisions need to be made.
- 39. The network of claim 38, wherein a master process performs conflict analysis if a conflict is returned after the local boolean constraint propagation is performed.
- 40. The network of claim 39, wherein the master process returns an unsatisfied message if a determined backtrack level due to the conflict is zero.
- 41. The network of claim 40, wherein the master process send local conflict clauses learnt and variable scores to respective clients if a determined backtrack level due to the conflict is not zero.
- 42. The network of claim 41, wherein the master process send backtrack level to all neighboring client processes.
- 43. The network of claim 42, wherein master processed performs a local backtrack and wait for client process to respond.
- 44. The network of claim 35, wherein a client process performs local boolean constraint propagation if a new message is an implication request.
- 45. The network of claim 44, wherein the client process sends a new implication request to neighboring client processes and sends a reply with antecedents corresponding to the implications and beset scorer to the master process.
- 46. The network of claim 45, wherein the client process performs a necessary backtracks if a new message is a backtrack message.
- 47. The network of claim 46, wherein the client process sends a best scorer information to the master process and updates the score and clauses send by the master process.
- 48. The network of claim 35, wherein a master process waits for all clients to stabilize before sending new implication requests.
- 49. The network of claim 35, wherein at least one client process sends active variable to master process prior to doing initializations.
- 50. The network of claim 35, wherein when a master process requests a backtrack to a client process, the master process waits for the client process to respond.
- 51. The network of claim 44, wherein the local backtrack is done after a remote request is sent.
- 52. The network of claim 43, wherein variable scores are updated after the next decision variable is sent.
- 53. The network of claim 35, wherein a task of choosing local decisions and maintaining ordered list of variables is performed by the client process.
- 54. The network of claim 35, wherein the master process does not maintain entire circuit information.
- 55. The network of claim 29, wherein the network is further adapted to solve a SAT-based Bounded Model Checking (BMC) problem, wherein the master process is adapted to convert the BMC problem originating from unrolling of a sequential circuit in different time frames into a SAT problem, and each client process is adapted to receive contiguous unrolled time frames .
- 56. The network of claim 55, wherein the master process requests a new unrolling to the client process that received the last unrolled time frame.
- 57. The network of claim 56, wherein the client process accepts the request and unrolls one time frame.
- 58. The network of claim 57, wherein in the client unrolls additional time frames in advance when available memory is sufficient.
- 59. The network of claim 58, wherein the client does advance unrolling while it is waiting for implication request from the master.
- 60. The network of claim 56, wherein the client denies the request when available memory is not sufficient and the master requests a client that was not requested before.
- 61. The network of claim 55, wherein the master maintains the incremental learnt clauses from previous time frames.
- 62. The network of claim 55, wherein the design is read and required initialization is done in all the clients a priori.
- 63. The network of claim 29, wherein the master process does not maintain the entire circuit information for a circuit corresponding to the SAT problem.
- 64. The network of claim 29, wherein Boolean constraint propagation is performed as part of solving the SAT problem using distributed processing.
- 65. The network of claim 64, wherein a process requests an implication without receiving corresponding reply message.
- 66. The network of claim 64, wherein a process delays the processing of replies for which there is no corresponding request information currently available.
I.A. RELATED APPLICATIONS
[0001] This Application claims priority from co-pending U.S. Provisional Applications Ser. No. 60/463,762 filed Apr. 18, 2003, and 60/461,254 filed Apr. 7, 2003, the contents of which are incorporated herein by reference.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60461254 |
Apr 2003 |
US |
|
60463762 |
Apr 2003 |
US |