[情報] SAT 之使用

看板EE_DSnP作者 (Ric)時間12年前 (2012/01/14 22:26), 編輯推噓3(307)
留言10則, 3人參與, 最新討論串1/3 (看更多)
雖然講義裏頭應該是說明得很清楚了,但我還是翻成中文來跟大家說明一下, 其實是很簡單用的... 1. Create 一個 SatSolver 的 object, 並且呼叫 initialize(). 2. 在證明任何 FEC pair 之前,請先建立整個 circuit 的 SAT model, 也就是說: (1) 每個 gate (含 PIs) 要對應到一個 SAT Var (solver.newVar()), (2) 呼叫 solver.addAigCNF() 去建立每個 AIG gate 對應的 CNF, 這些 CNF clauses 會存在 solver 中。 3. 針對某個要證明的 FEC pair "F == XOR(f, g)", (<= 要給 F 一個新的 SAT Var) 呼叫 solver.addXorCNF() 去建立對應的 CNF clauses. 4. 呼叫 "solver.assumeProperty(F_var)" 以及 solver.assumpSolve() 來看看 F == XOR(f, g) 是否可以 satisfied. 5. 如果 UNSAT (solve() return false), 則 f alywas = g, => 可以merge. 如果 SAT (solver() return true), 則可以根據 circuit 的 PIs 所對應的 SAT vars 去抓到 SAT assignment (呼叫 getValue()), 然後等一下可以利用這些 assignment (pattern) 去 simulate. 6. 下次要再證明別的 pair 時只要把 assumption release, 再重複 3 ~ 5 就可以了! 不用重建電路的 proof model. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.54.233

01/14 22:29, , 1F
補充一下,如果你的電路改掉了,circuit 的 proof model
01/14 22:29, 1F

01/14 22:29, , 2F
請問一下在步驟2的時候,po有要建立SAT Var嗎?
01/14 22:29, 2F

01/14 22:30, , 3F
可能就要重建囉! 不能只是 release assumption 哦!
01/14 22:30, 3F

01/14 22:31, , 4F
PO 如果會在 FEC pairs 裏頭理論上是要啦! 不過也可以讓
01/14 22:31, 4F

01/14 22:31, , 5F
PO 的 SAT var 等於 po->fanin[0] 的 SAT var
01/14 22:31, 5F

01/14 22:32, , 6F
謝謝教授
01/14 22:32, 6F

01/14 22:58, , 7F
請問我們找的FEC pairs不是不用包含po嗎?
01/14 22:58, 7F

01/14 23:12, , 8F
所以我說 "如果"...
01/14 23:12, 8F

01/15 00:12, , 9F
更正一下,我刪掉 gates 時並沒有重新 create proof model
01/15 00:12, 9F

01/15 00:12, , 10F
不過這邊要小心,不要拿到 garbage 來證...
01/15 00:12, 10F
文章代碼(AID): #1F4P2Y39 (EE_DSnP)
討論串 (同標題文章)
文章代碼(AID): #1F4P2Y39 (EE_DSnP)