EE_DSnP 板


LINE

大哉问,要仔细回答可能要上半学期的课... ※ 引述《puerpuella (柏亨)》之铭言: : 看不太懂sat engine是要怎麽用.. : 是要一开始就把整个电路每个gate建出来,simulate找出FEC pairs後再证明, : 还是对每一个FEC pair都把子电路建出来,证完再删掉建下一个? Simulation 的复杂度基本上是 linear to the circuit size x num of patterns. 所以要 simulate 成千上万个 patterns 还算是快。 电路里的 signal pairs 有 N 平方对, simulation 可以用来将 non-EQ (non-equivalent) pairs 找出来, 剩下的就是可能的 EQ pairs (FEC). SAT solver 是用来检查一个 Boolean function F 是否为 satisfiable, 也就是说可否找到一组 variable assignment 使得 F = 1. 所以如果我们将 FEC pair (a, b) 加个 xor gate, 也就是说让 F = a xor b, 再用 SAT 去解 F = 1, 如果 SAT 告诉你无解 (UNSAT) 的话你就可以确定 a 一定永远等於 b, 反之,你可以找到一组 assignment 去见证 a != b, 而你也可以用这组 assignment 来看看它是否可以见证其他 FEC pair 为 non-EQ 不过,SAT in general 是 NP complete 的问题, 也就是说,它的复杂度可以跟电路大小成 exponential 的关系。 总而言之,我们不希望给他太多 FEC pair 让他解太久, 所以跑 simulation 的用意就是希望把一些 non-EQ 的 pairs 尽量找出来, 但是有些 singla pairs 要用 simulation 来证实是 non-EQ 的机率太低了, 所以很可能 simulation 跑老半天也无法 distinguish 出来, 这时就不如交给 SAT 去证明比较好。 请注意 SAT solver 有它自己的 data structure, 通常是以 CNF (conjunctive normal form; i.e. product of sum) 来表示, 里头最主要的 DS 就是 "clause", "variable", 以及 "literal". 後两者与 AIG 的定义相似,而前者泛指 literals 的 disjunctions, 像是 "(a + !b + c)", 或是 "(!a)" 等等。 而一个 SAT 的问题 (called "proof model") 就是以一堆 clauses conjunct 起来的。 >> 以上为介绍,以下回答你的问题: 实际的做法应该是: Construct circuit; // AIGER file to circuit graph Strash; // Weed out structurally EQ signals Simulate; // Collect potential FEC pairs Initialize SAT engine; // init(); assign Var ID for each gate for_each(Pair p, FEC_pairs) 将 p 的 子电路对应的 CNF formula 建出来; // use "addAigCNF()" Release assumption; 将新的要证的 FEC pair logic (i.e. a xor b) 的 CNF 加入 as assumption; Call assumeSolve(); 处理证完的结果; // simplify 电路 or gather counter-example continue for the next pair : 另外我搞不懂sat里面的assume和assert要怎麽分别? : 每个直接xor起来再assert和分别assume值求解感觉效果一样 这牵涉到 SAT 内部的实作, 简而言之,现在的 SAT solver 为了使的效率提高, 通常会在解的过程加入各式各样的学习机制, 比方说他在搜寻 assignment 的时候很可能会发现搜寻的方向错误, 这时学习机制就会将错误的原因找出来,加入搜寻的条件, 让 SAT engine 以後不要再犯相同的错误。 而这种学习的结果通常对於一个电路而言是永远成立的, 也就是说在证明一个 (例如) FEC pair 时所学到的所有东西 在证明下一个 FEC pair 时还是适用,这叫做 "incremental SAT solving"。 因此,"assume" 系列的 functions 就是要用来做 "incremental SAT" 的, 我们一次将一个 FEC pair 的 "a xor b" 加入 proof model 当作是 assumption, 证完之後再将 assumption release,然後继续下一个 FEC pair, 这样所有的 learned informaion 都可以 carry over, 提升整体效能。 而 assert 是用来做 one-time proof 的。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.36.51.20
1F:推 puerpuella:大致上了解了,谢谢教授!! 01/11 18:55







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP