CN103838908B - 一种基于aig和sat求解器的gste模型检测方法 - Google Patents
一种基于aig和sat求解器的gste模型检测方法 Download PDFInfo
- Publication number
- CN103838908B CN103838908B CN201310418675.3A CN201310418675A CN103838908B CN 103838908 B CN103838908 B CN 103838908B CN 201310418675 A CN201310418675 A CN 201310418675A CN 103838908 B CN103838908 B CN 103838908B
- Authority
- CN
- China
- Prior art keywords
- aig
- mrow
- scales
- sat solver
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于包括以下步骤:步骤1,使用ABC工具建立AIG模型;将该AIG转化成FRAIG,同时使用逻辑综合算法化简该FRAIG,减小AIG规模;步骤2,计算每条边上的状态集不动点Ψ*,步骤3:将算得的每条边上的不动点和相应边上的cons做验证,若则报错,并通过反向迁移找到反例;步骤4:判断每条边上的状态集是否到达不动点,若到达不动点,完成本次验证,否则返回步骤2,进行下一轮状态集的计算。
Description
技术领域
本发明属于硬件形式化验证技术领域,特别针对形式化验证中状态迁移和状态集合表示方式的处理。提供了一种基于AIG和SAT求解器的GSTE模型检测方法。
背景技术
在过去的几十年中,在社会各个领域中电子设备及其相关系统应用的研究不断深入开展,随着系统复杂化,如何保证设计的正确性成为了开发过程中主要的问题。
对于芯片设计常用的验证方法总体上分为两种,仿真和形式化验证。仿真是将系统在计算机上进行模拟,通过给定一组输入,亦即测试向量,经过仿真计算,将得出的实际结果和系统应有性质,即应该得到的结果进行比较。每一步的仿真计算快,而且给定一个测试向量可以得到唯一的结果,可以精确地验证这一组结果是不是满足系统性质。但是仿真具有致命缺陷——覆盖率低。而且测试向量一般是人工设计,这也需要耗费大量时间精力。
形式化验证通过将系统和状态表示成布尔表达式,克服了仿真中每一个变量都必须有一个确定的值从而造成测试向量过大的缺点,大大提高了覆盖率,完备的形式化方法可以达到全覆盖。模型检测是硬件的形式化验证中一种重要的方法。基本思想是将系统的行为抽象成一系列状态迁移规则,形成一个系统,多为有限自动机形式;同时将系统必须满足的性质也表示成模型,可以是模态逻辑公式,也可以是断言图等形式。模型检测可以对有穷的系统完成自动检测,判断该系统是否满足给出的所有性质,同时自动构造不满足性质的反例。同时模型检测可以实现自动化并且可以针对部分模型或者部分性质进行验证。
目前常用的模型检测的技术有:CTL(计算树逻辑)模型检测、BMC(有界模型检测)、GSTE(扩展符号轨迹检测),此外等价性验证也已经应用于工业界。BDD(二叉判定图)作为模型检测中常用的一种表示系统迁移关系和状态集的数据结构,相比真值表具有很大优势,因此在过去的模型检测方法中都是以BDD为基础实现。但是BDD也是基于真值枚举的一种表现形式,对于一个稍大的系统或者状态集,会导致状态爆炸。
为满足验证规模和效率的两方面需求,本发明提出同时将SAT(可满足性问题)求解器和AIG(与非图)应用于GSTE模型检测的方法。包括将系统迁移关系和状态集表示成FRAIG(功能简化与非图)结构,在Image(后像)计算中结合使用SAT和FRAIG/AIG完成存在量词的消去和性质验证等。同时在整个验证过程中使用基于BDD和基于AIG的逻辑综合算法对FRAIG/AIG进行化简,在验证的每一步骤减小AIG规模。本发明相比基于AIG的CTL模型检测,可以有效地提高效率;相比基于BDD的GSTE模型检测,可以有效地提高验证规模;相比BMC,可以提供更高的验证可靠性。
与本发明相关的现有技术
AIG简介
AIG使用与门节点和非门节点表示一个布尔表达式,其中每个节点有两个输入,表示一个“与”关系,“非”关系表示在边上。图8是一个AIG示例:
图8表示的布尔表达式是out=a+b。out对应的节点称为输出端口,a和b对应的节点称为输入端口。
芯片设计中常使用寄存器,而寄存器的上一状态和下一状态往往是相关的,在AIG中,使用两个变量分别表示一个寄存器的上一状态和下一状态。
基于AIG的CTL模型检测
CTL模型检测的主要思想是给定一个状态集合,通过preimage计算,判断是否有存在能够到达这个给定的状态集的某个或者某些状态。对于不同的计算公式,使用不同的计算。例如EX(S),那么系统中的至少存在一条路径可以到达这个状态集S。其中preimage操作是给定一个状态,计算上一步有哪些状态可以迁移到该状态。
该方法在计算到达不动点(即状态集不再增大)或者找到反例时停止。在实际使用中,当运行需要的系统资源不足时,也会停止。
该方法的缺点是计算树逻辑公式难以读懂,设计困难,需要具有专门知识的人员进行设计。同时CTL公式表达能力有限,无法表示所有需要的性质,并且公式的计算开销大。所以基于CTL模型检测的工具大多存在耗时和耗资源的问题。
基于AIG和SAT的BMC
BMC和CTL模型检测方式正好相反,是从初始状态出发,根据模型中的路径是否不满足给定的性质进行判断。同样,BMC也需要根据验证的类型进行不同的计算。
令I(S0)表示系统的初始输入,R(Si+1,Si+2)表示迁移关系,即模型上一状态Si+1和下一状态Si+2的状态迁移关系,P(Si)表示性质在第i步验证中的表达式。验证时,使用SAT求解器对展开的逻辑表达式求解。若能找到解,说明系统不满足给定的属性。
同时,在BMC方法中加入了CT(完整性阈值),表示若Ω(k)满足CT,那么可以断定该次检测已经证明了模型时满足给定的性质,即使只验证了k步。但在实际使用中,CT的精确计算是很难的,因此经常计算精确CT的一个over-approximation(过近似),使
该方法的缺点是:当BMC检测出错误路径时,模型必然存在错误;但是BMC的缺陷在于在给定的K次检测中,若不能发现错误,则不能断定模型没有错误。同时,由于迁移关系公式需要进行k次展开,使得公式中共有单个公式中变量数k倍变量,往往使公式规模很大,增加了SAT求解器的搜索空间。
使用AIG表示迁移关系和状态集,可以简化模型,并且在每一步展开时进行化简,从而使得公式规模整体减小,但是仍然无法解决变量数快速增加的问题。
基于BDD的GSTE
GSTE是由STE(符号轨迹验证)推广而来,是一种基于符号仿真的模型检测方法。在GSTE中,性质使用断言图表示。断言图类似于一个有限自动机,表示该模型可以接收的语言。在断言图的每一条边上,存在两个属性ant和cons,任何一次迁移运算得到的结果若满足ant,那么必须满足cons,否则该模型不满足cons性质。
图9是断言图的一部分的例子。
算法使用post运算根据上一状态集得到下一状态集,同时进行验证。
假设在V1计算出一个状态集S1,那么必须满足同理从V2计算出来的状态集也必须和V2的每条出边上的性质做验证。
算法中主要的操作是post运算,亦即模型检测中的Image(后像)运算。在GSTE中描述为:其中Q是状态集,s、s’是单个状态,M是模型。Image运算表示为其中x是当前状态,y是下一状态,w是输入变量,P表示输入状态集,T表示迁移关系,即模型。
算法首先计算每个点上的状态集的不动点,再通过cons进行验证;或者可以在每一次迁移运算后就进行验证,直到到达不动点或者发现反例。
基于BDD的GSTE模型检测中,使用BDD完成post运算。GSTE和CTL模型检测相比,由于GSTE验证过程中使用了断言图边上ant对每次的状态集做了限制,因此整个过程中状态集相对较小,计算效率更高。但是使用BDD始终只能针对小规模电路。在基于BDD的GSTE模型检测中无法针对200个寄存器或者以上规模的模型完成验证。
发明内容
本发明的目的在于提供一种可以有效地加大验证规模和提高验证效率的一种基于AIG和SAT求解器的GSTE模型检测方法
为了实现上述目的本发明采用以下技术方案:
一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于包括以下步骤:
第一步,使用ABC工具建立AIG模型;将该AIG转化成FRAIG,同时使用逻辑综合算法化简该FRAIG,减小AIG规模。
建立AIG保存用于系统迁移关系和表示性质的断言图。断言图的一条边用一个AIG表示,这些AIG具有相同名称的输出端口,并保持与迁移关系AIG的输出端口不同名。
初始建立的迁移关系的AIG是用多个等式的形式表示迁移关系,使用下面方法改造AIG,使其使用一个等式的形式表示迁移关系:
(1.1)一个AIG中每一个输出端口和AIG网络中的“与”节点表示一个等式关系。根据香农展开公式,改造当前AIG,将等式变成同或式,最终用一个输出端口表示这些同或关系式。
(1.2)使用逻辑综合算法对(1.1)中得到网络化简。
(1.3)使用ABC命令或者调用其内部函数,将(1.2)中得到的网络转化成FRAIG。同时对该FRAIG使用逻辑综合命令化简
第二步,计算每条边上的状态集不动点Ψ*。在第一步中得到的AIG表示整个电路,也作为计算中使用的状态迁移函数。不动点计算公式如下:
其中e表示边,e-表示e的入边。Ψ表示状态集,使用FRAIG表示。
对于post运算,我们需要消除计算式中的存在量词,即上一状态变量和输入变量。量词消去步骤如下:
若当前AIG不是FRAIG,将AIG转化成FRAIG。设置下面阈值:量词调度方法中AIG规模limit_sch_AIG(不小于初始AIG规模)、量词调度方法中AIG规模增长速度限制limit_sch_grow(一般不大于1.5)、使用BDD sweeping的AIG规模limit_sweep_AIG(初始值和初始AIG规模相关)、BDD sweeping中BDD规模limit_sweep_BDD(应该足够大,以允许BDD变量重排序)、允许随机SAT求解时间limit_ranSAT。
首先使用量词调度法消除存在量词。在这一过程中,基于贪心的思想,先对每一变量尝试消除一次,选取其中结果AIG节点最小的一次作为实际消去的变量。当AIG规模增长达到limit_sch_grow时,说明使用量词消除已经造成较多的节点冗余,所以即使没有达到limit_sch_AIG,也进入使用SAT求解器阶段。
(2.1)对每个要消除的量词(也是对变量的消除),使用AIG完成布尔表达式的F(x=1)+F(x=0),得到一个消去单个变量的AIG。
(2.2)将每一次尝试后的AIG转化成FRAIG并化简。若所有结果AIG规模都超过limit_sch_AIG或者增长都超过limit_sch_grow,则进入SAT消除法。否则,选择结果AIG规模最小的一次消除作为本次消除的变量。
(2.3)若当前选择的AIG规模比limit_sweep_AIG大时,使用BDD sweeping对其化简。若化简中超出limit_sweep_BDD或者得到的BDD节点数超过原来AIG的1/3,则放弃此次化简。
(2.4)若还有需要消除的变量,则继续(2.1);若没有需要消除的变量,本次存在量词消除完成。对结果进行化简。进入步骤3。
当量词调度法无法控制AIG规模时,使用SAT求解器进行量词消除。由于在有解的情况下,随机SAT求解器往往能更快地找到解,首先使用随机SAT求解器。在一定时间内随机SAT无法找到解时,使用完全SAT求解器求解或者说明此时无解。
令此时需要进行量词消除的AIG为F。
(2.5)使用随机SAT求解器对F求解,得到一个布尔表达式C。保存该布尔表达式。
(2.6从(2.1)中求解得到的布尔表达式中获得由消去的变量的构成的最小项。使用该最小项对布尔表达式求余因子cofactor。
(2.7)从CNF中去除已经求得的解。令C=C∪cofactor。令F(S)=F∩!C。继续步骤(2.5)。
(2.8)当(2.1)在limit_ranSAT时间内,随机SAT求解器无法求出解,那么使用
完全SAT求解器求解。最终返回结果C。完成量词消去,进入步骤2.3。
第三步:将算得的每条边上的不动点和相应边上的cons做验证,若则报错,并通过反向迁移找到反例。
验证结合使用FRAIG和SAT求解器完成,具体步骤如下:用S表示一条边上的状态集不动点,P表示该边上的cons。“!”表示取反。
(3.1)对AIG(P)取反,将该AIG的唯一的输出节点的入边取反。
(3.2)将AIG(S)和AIG(!P)做相与操作,结果转化成FRAIG,同时使用逻辑综合算法进行化简。
(3.3)使用随机SAT求解器对(3.2)中得到的AIG求解。若有解,则报错,进入反向迁移计算过程。否则,在指定的时间内未找到解,则使用ABC中集成的完全SAT求解器求解。若有解,则报错,使用反向迁移找错误路径。不动点计算
终止。
第四步:判断每条边上的状态集是否到达不动点。若到达不动点,完成本次验证。否则返回步骤2,进行下一轮状态集计算。
附图说明
图1为GSTE强可满足性验证流程;
图2为迁移关系AIG改造;
图3为post计算中量词消除操作流程;
图4为量词调度法;
图5为AIG的f(x=0)+f(x=1)优化操作;
图6为使用SAT求解器消除量词操作;
图7为使用SAT求解器完成一条边上的验证操作;
图8为一个AIG示例;
图9为一个部分断言图示例。
具体实施方式
下面结合附图对本发明作进一步详细的描述:
如图1,图中描述的是本方法中GSTE强可满足性算法的总体流程。通过步骤1.1,建立迁移关系。本方法使用ABC读取系统设计的verilog文件或者vl2mv文件,在ABC中使用AIG表示。使用AIG可以精简的表示一个系统或者说布尔表达式。断言图可以在PC中以多个结构体的形式表示。步骤1.2中将各边的状态集初始化为该边上的ant,边上ant和cons可以使用AIG表示,也可以使用BDD表示。步骤1.2、1.3、1.4是验证的主体,1.2计算每条边上的下一步迁移后的状态集,计算使用AIG完成,1.3将计算得到的状态集和相应边上的cons进行验证,使用SAT求解器对状态集S∩!Cons求解,若有解,则报错并寻找错误路径。否则,在1.4中判断每条边是否都达到不动点。若有边未到不动点,则需进行下一步迁移后状态集计算。当达到不动点时,说明此时每条边上的状态集都包含于cons中,验证通过。
如图2,该图描述的是迁移关系改造流程,使用与图1中的步骤1.1。直接读入的AIG有多个输出端口节点,既包括芯片中原输出端口,也包括芯片中寄存器的下一状态变量。通过本过程,将迁移关系中寄存器下一状态和上一状态以及其他输入端口的等式改写成同或。
步骤2.1首先将迁移关系AIG转换成FRAIG并化简,减小AIG规模。
步骤2.2判断AIG中是否有寄存器变量。于每一次步改造都用两个输入端口替代寄存器上下状态变量,最终AIG中寄存器被消除。
步骤2.3,2.4,2.5,2.6是对每一对寄存器上下两状态变量的具体操作:
对每一个寄存器下一状态端口Rnext,获得其扇入节点in,删除Rout,建立一个新的输入端口Rnext’,建立一个节点n1,表示Rout’*in,建立一个节点n2,表示!Rnext’*!in,再建立一个节点n3表示n1+n2。
对寄存器上下两个状态X’、X,我们可以得到一个“与”节点表示同或X’*f(X)+!X’*!f(X)。最后使用若干个“与”节点,将这些同或节点相与。
步骤2.7将上面得到的所有同或节点的相与关系节点输出给一个新生成的输出端口节点。
步骤2.8中,若只验证寄存器变量,则在步骤2.9,2.10将AIG中所有输出端口节点删除,只保留2.7中的输出端口,并使用ABC中cleanup命令递归删除AIG中没有扇出的节点。
步骤2.11将改造后的AIG转换成FRAIG并化简。
在状态集不动点的计算中,最关键的是post运算。首先将迁移关系AIG和需要迁移的状态集AIG相与,再通过量词消除(也是变量消除)得到输入端口只包含寄存器下一状态变量的AIG。post完成后,根据公式进行其他的状态集的“与”和“或”操作。
如图3,是post运算中量词消除的操作流程。
由于在每一次计算后,AIG结构都发生变化,将AIG转换成FRAIG并化简可以减少AIG节点数。
首先使用量词调度方法进行消除。相比基于SAT求解器的方法,量词调度法操作简单,效率高。
步骤3.2,通过量词调度,尝试消除一个变量,若所有变量都无法在规定限制下消除,则进入SAT求解器量词消除阶段。
步骤3.3判断量词是否消除完毕,若还剩余量词,则重复执行3.1,3.2,直到量词消除完毕或者所有变量都无法在规定限制下消除。
步骤3.4使用SAT求解器消除量词,首先使用随机SAT求解,当求解超过给定时间限制时,使用完全SAT求解器。
步骤3.5中判断当完成SAT求解器求解超时时,剩余的变量个数是否多余给定限制。若少于给定限制,则该部分变量可保留,重命名为唯一名字,一般可以命名为和当前计算步数相关的名称。若多余给定限制,则对AIG中若干个输入端口赋值,得到多个AIG,使用FRAIG表示并化简。使用这些规模更小的FRAIG表示一个AIG。
使用多个AIG表示一个AIG虽然会增加计算次数,但是一般情况下,节点数少的AIG在化简时往往能去除大部分冗余节点;而节点数多的AIG化简效果往往不明显。因此使用多个AIG表示一个AIG可以在每一次计算时都得到较简单的AIG,避免大规模AIG在计算中节点数近成倍增加的恶性循环。
首先使用量词调度法消除变量。
如图4,是量词调度法消除量词的操作流程。
步骤4.1首先将需要进行量词消除的AIG转换成FRAIG并化简。
在本方法中多次使用到AIG到FRAIG的转换并化简的操作。由于AIG在规模较小时化简效果明显,因此在整个过程中频繁使用FRAIG和化简,可以及时有效地控制AIG规模。
步骤4.2判断当前AIG中是否存在需要消除的变量。若不存在,则使用量词调度法已经完成了量词消除。否则继续使用量词调度法消除。
步骤4.3对每一个量词进行f(x=0)+f(x=1)尝试。
步骤4.4判断结果中是否有可选用的消除操作。
步骤4.5中,若所有结果中存在满足阈值limit_sch_AIG和limit_sch_grow的结果,则选其中结果AIG节点最少的一次消除作为本次消除。
步骤4.6使用BDD sweeping方法化简当前AIG。完成后继续执行重复步骤4.2~4.6,直到完成量词消除或者必须使用SAT求解器。
步骤4.7中若所有结果的AIG规模都超过阈值,说明使用量词调度已经无法在控制AIG规模的前提下消除量词,此时使用SAT求解器消除量词。
步骤4.8使用量词调度法完成消除,将AIG转换成FRAIG并化简。
使用AIG完成f(x=0)+f(x=1),最基本的方法是复制当前AIG,再将一个AIG中的x变量赋值为1,另一个AIG中该x赋值为0,最后使用一个节点将两个AIG相与并化简。使用这种方法,两个AIG中可能有多个相同功能的节点,当AIG达到一定规模时,这些功能相同的节点未必能够被合并,同时也增加了AIG化简的复杂度。本方法中对此基本方法进行改进,避免了额外增加相同功能的节点。
如图5是该改进方法的操作流程。
该改进的基本思路是事先找到需要复制的节点,避免复制不需要的节点。“需要”的标准是:从将要消除的变量出发自底向上遍历,凡是遍历到的节点都是和该变量相关的节点,需要复制,其他未遍历的节点不需要复制。
步骤5.1从变量节点开始自底向上遍历。设置一个存储区CUR,存放当前操作的节点,和另一个存储区NEXT,存放下一次操作的节点。初始化CUR为变量节点,NEXT为空。NEXT中的节点是CUR中节点的父节点(出边端点)。
步骤5.2访问CUR内节点的父节点,若存在节点,则进入5.3;若不存在节点,说明已经到了AIG顶端,访问结束,进入5.5。
步骤5.3将访问到的父节点复制为一个新节点,同时在新节点中标记它对应的源节点,即被复制的父节点的id。
步骤5.4将复制得到的节点存入NEXT中。同时用NEXT替换CUR并将NEXT置空。
步骤5.5根据原AIG中节点间的出入边关系,将复制得到的新节点插入到原AIG中。
由于在AIG化简时,变量节点仍然有出边,说明该变量影响整个AIG,从而AIG最顶点的节点也会被复制。步骤5.6使用一个节点表示原顶点节点和复制的顶点节点“或”关系。
步骤5.7将AIG转化为FRAIG并化简。
使用量词调度法消除变量后,使用BDD sweeping对结果AIG化简。BDD sweeping操作主要使用ABC中的BDD sweeping命令完成。
本发明中并不是每次使用量词调度法消除一个变量后都进行BDD sweeping,而是当AIG规模超过limit_sweep_AIG时才使用。同时,在进行BDD sweeping时,根据上一次sweeping的结果对几个相关阈值进行更改。
若BDD成功建立,但是由于超过limit_sweep_AIG而未被使用,则将limit_sweep_AIG乘以一个系数f,1<f1<2。
若BDD成功建立,同时化简后的AIG被接受,即得到的BDD节点数超过原来AIG的1/3,则将limit_sweep_AIG设置为当前AIG节点数。
若BDD由于超过limit_sweep_BDD,则将limit_sweep_AIG乘以一个较大的系数,f2>1。相应的limit_sweep_BDD也乘以该系数。
图6是使用SAT求解器进行变量消除的操作。
该阶段使用两种SAT求解器求解。由于在有解的情况下,使用随机SAT往往能更快地找出解,所以首先使用随机SAT求解器进行变量消除;当在给定时间限制内随机SAT求解器无法找到解,不能确定此时是否还有解,需要再使用完全SAT求解器。求出的解使用一个哈希表——cube哈希表保存。
使用SAT求解器消除变量并不是对变量逐一消除,而是在求解结束时,所有要消除的变量都已被消除。
步骤6.1将无法继续使用量词调度消除变量的AIG转换成cnf范式。同时令cube哈希表和保存最终结果的公式C为空。
步骤6.2~步骤6.7是使用随机SAT求解器消除变量流程。
步骤6.2在给定时间限制内使用随机SAT求解器对cnf求解。
步骤6.3若有解,则将解插入cube哈希表。并取哈希表中的一个cube。
步骤6.4从该cube中获取关于要消除的变量的最小项。
步骤6.5使用6.3中的最小项对AIG进行因式分解,得到结果c’。
步骤6.6将6.4中的c’并入C中。即C=C∪c’。
若步骤6.3无解,则进入步骤6.7使用完全SAT求解器求解。若有解,进入步骤6.3,否则,此时求解已经结束,需要消除的变量已消除完毕。
步骤6.8返回求得的C。将C转换成FRAIG并化简。
步骤6.9是在当完全SAT求解器求解超时时,根据剩余变量数是否在限制范围内。若在则可以保留,否则使用多个AIG表示一个AIG。
图7是验证操作流程图。
步骤7.1将表示边上cons的AIG做取反操作。
步骤7.2将取反后的cons和完成变量消除的表示状态集的AIG做相与操作。
步骤7.3使用随机SAT求解器对步骤7.2的AIG生成的cnf式求解,若有解则模型不满足性质,报错;若在限定时间内无解,则进入步骤7.4。
步骤7.4使用完全SAT求解器对步骤7.2中的AIG生成的cnf式求解,若有解则模型不满足性质,报错;否则,对边上的一次验证通过。若所有边上的验证都通过,则进行下一次状态集迁移计算并验证。任意一条边上的验证不通过,则报错,使用反向迁移给出反例。
Claims (4)
1.一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于包括以下步骤:
步骤1,使用ABC工具建立AIG模型;将该AIG转化成FRAIG,同时使用逻辑综合算法化简该FRAIG,减小AIG规模;
步骤2,计算每条边上的状态集不动点Ψ*,在第一步中得到的AIG表示整个电路,也作为计算中使用的状态迁移函数,不动点计算公式如下:
<mrow>
<msub>
<mi>&psi;</mi>
<mrow>
<mi>n</mi>
<mo>+</mo>
<mn>1</mn>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<mi>e</mi>
<mo>)</mo>
</mrow>
<mo>=</mo>
<msub>
<mi>&psi;</mi>
<mi>n</mi>
</msub>
<mrow>
<mo>(</mo>
<mi>e</mi>
<mo>)</mo>
</mrow>
<mo>&cup;</mo>
<mrow>
<mo>(</mo>
<munder>
<mrow>
<mi></mi>
<mo>&cup;</mo>
</mrow>
<mrow>
<msup>
<mi>e</mi>
<mo>-</mo>
</msup>
<mo>&Element;</mo>
<mi>i</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<mi>e</mi>
<mo>)</mo>
</mrow>
</mrow>
</munder>
<mi>p</mi>
<mi>o</mi>
<mi>s</mi>
<mi>t</mi>
<mo>(</mo>
<msub>
<mi>&psi;</mi>
<mi>n</mi>
</msub>
<mo>(</mo>
<msup>
<mi>e</mi>
<mo>-</mo>
</msup>
<mo>)</mo>
<mo>)</mo>
</mrow>
<mo>&cap;</mo>
<mi>a</mi>
<mi>n</mi>
<mi>t</mi>
<mo>(</mo>
<mi>e</mi>
<mo>)</mo>
<mo>)</mo>
</mrow>
其中e表示边,e-表示e的入边,Ψ表示状态集,使用FRAIG表示,ψn(e)表
示当前已经计算出的存于边上的状态集合,ψn+1(e)表示下一步计算的状态集合;post()是状态迁移函数,是给定一个状态集和一个迁移关系,经过迁移后得到的状态集;in(e)表示断言图中边e的入边,ant(e)表示边上的ant状态集,在下面出现的表示状态集不动点,cons(e)表示边上的cons状态集;
步骤3:将算得的每条边上的不动点和相应边上的cons做验证,若则报错,并通过反向迁移找到反例;
步骤4:判断每条边上的状态集是否到达不动点,若到达不动点,完成本次验证,否则返回步骤2,进行下一轮状态集的计算。
2.根据权利要求1所述的一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于:所述步骤1中,建立AIG保存用于系统迁移关系和表示性质的断言图,断言图的一条边用一个AIG表示,这些AIG具有相同名称的输出端口,并保持与迁移关系AIG的输出端口不同名;
步骤1中初始建立的迁移关系的AIG是用多个等式的形式表示迁移关系,使用下面方法改造AIG,使其使用一个等式的形式表示迁移关系:
(1.1)一个AIG中每一个输出端口和AIG网络中的“与”节点表示一个等式关系,根据香农展开公式,改造当前AIG,将等式变成同或式,最终用一个输出端口表示这些同或关系式;
(1.2)使用逻辑综合算法对(1.1)中得到网络化简;
(1.3)使用ABC命令或者调用其内部函数,将(1.2)中得到的网络转化成FRAIG,同时对该FRAIG使用逻辑综合命令化简。
3.根据权利要求1所述的一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于:所述步骤2中对于post()状态迁移函数的运算,我们需要消除计算式中的存在量词,即上一状态变量和输入变量,量词消去步骤如下:
设置下面阈值:量词调度方法中AIG规模limit_sch_AIG不小于初始AIG规模、量词调度方法中AIG规模增长速度限制limit_sch_grow,量词调度方法中AIG规模limit_sch_AIG不大于1.5、使用BDD sweeping的AIG规模limit_sweep_AIG的初始值和初始AIG规模相关、BDDsweeping中BDD规模limit_sweep_BDD、随机SAT求解时间limit_ranSAT;
首先使用量词调度法消除存在量词,在这一过程中,基于贪心的思想,先对每一变量尝试消除一次,选取其中结果AIG节点最小的一次作为实际消去的变量,当AIG规模增长达到limit_sch_grow时,说明使用量词消除已经造成较多的节点冗余,所以即使没有达到limit_sch_AIG,也进入使用SAT求解器阶段,使用SAT求解器进行量词消除;
所述使用量词调度法消除存在量词包括以下步骤:
(2.1)对每个要消除的量词,使用AIG完成布尔表达式的F(x=1)+F(x=0),得到一个消去单个变量的AIG;
(2.2)将每一次尝试后的AIG转化成FRAIG并化简,若所有结果AIG规模都超过limit_sch_AIG或者增长都超过limit_sch_grow,则进入SAT消除法,否则,选择结果AIG规模最小的一次消除作为本次消除的变量;
(2.3)若当前选择的AIG规模比limit_sweep_AIG大时,使用BDD sweeping对其化简,若化简中超出limit_sweep_BDD或者得到的BDD节点数超过原来AIG的1/3,则放弃此次化简;
(2.4)若还有需要消除的变量,则继续(2.1);若没有需要消除的变量,本次存在量词消除完成,对结果进行化简,进入步骤(2.3);
使用SAT求解器进行量词消除包括以下步骤:
令此时需要进行量词消除的AIG为F;
(2.5)使用随机SAT求解器对F求解,得到一个布尔表达式C,保存该布尔表达式;
(2.6)从(2.1)中求解得到的布尔表达式中获得由消去的变量的构成的最小项;使用该最小项对布尔表达式求余因子cofactor;
(2.7)从CNF中去除已经求得的解,令C=C∪cofactor,令F(S)=F∩!C;继续步骤(2.5);
(2.8)当(2.1)在limit_ranSAT时间内,随机SAT求解器无法求出解,那么使用完全SAT求解器求解,最终返回结果C,完成量词消去,进入步骤(2.3)。
4.根据权利要求1所述的一种基于AIG和SAT求解器的GSTE模型检测方法,其特征在于:步骤3中所述的验证是结合使用FRAIG和SAT求解器完成,具体步骤如下:用S表示一条边上的状态集不动点,P表示该边上的cons,“!”表示取反;
(3.1)对AIG(P)取反,将该AIG的唯一的输出节点的入边取反;
(3.2)将AIG(S)和AIG(!P)做相与操作,结果转化成FRAIG,同时使用逻辑综合算法进行化简;
(3.3)使用随机SAT求解器对(3.2)中得到的AIG求解,
若有解,则报错,进入使用反向迁移技术找出反例;
若无解,在指定的时间内未找到解,则使用ABC中集成的完全SAT求解器求解,若有解,则报错,使用反向迁移技术找出反例,不动点计算中止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310418675.3A CN103838908B (zh) | 2013-09-14 | 2013-09-14 | 一种基于aig和sat求解器的gste模型检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310418675.3A CN103838908B (zh) | 2013-09-14 | 2013-09-14 | 一种基于aig和sat求解器的gste模型检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103838908A CN103838908A (zh) | 2014-06-04 |
CN103838908B true CN103838908B (zh) | 2017-08-25 |
Family
ID=50802401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310418675.3A Expired - Fee Related CN103838908B (zh) | 2013-09-14 | 2013-09-14 | 一种基于aig和sat求解器的gste模型检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103838908B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115062566B (zh) * | 2022-06-21 | 2023-06-27 | 深圳国微芯科技有限公司 | 含有x值的电路的简化方法、验证方法、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7813903B2 (en) * | 2005-04-13 | 2010-10-12 | Autodesk, Inc. | Fixed time step dynamical solver for interacting particle systems |
CN101504690B (zh) * | 2009-03-26 | 2011-04-13 | 北京航空航天大学 | 用于通信系统集成电路设计的实时仿真验证系统及其方法 |
-
2013
- 2013-09-14 CN CN201310418675.3A patent/CN103838908B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103838908A (zh) | 2014-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mishchenko et al. | Improvements to combinational equivalence checking | |
US6931611B2 (en) | Design verification system for avoiding false failures and method therefor | |
US8682631B2 (en) | Specifications-driven platform for analog, mixed-signal, and radio frequency verification | |
US6378112B1 (en) | Verification of design blocks and method of equivalence checking of multiple design views | |
US6148436A (en) | System and method for automatic generation of gate-level descriptions from table-based descriptions for electronic design automation | |
US20040123254A1 (en) | Model checking with layered localization reduction | |
Morin-Allory et al. | Proven correct monitors from PSL specifications | |
CN108153920A (zh) | 集成电路设计的rtl阶段期间的时钟门控验证 | |
Cohen et al. | Using PSL/Sugar for formal and dynamic verification: Guide to Property Specification Language for Assertion-based Verification | |
US7188327B2 (en) | Method and system for logic-level circuit modeling | |
US7926020B1 (en) | Methods for automatically generating assertions | |
Konečný et al. | Enclosing the behavior of a hybrid automaton up to and beyond a Zeno point | |
US20130151444A1 (en) | Methods and apparatus for utilising solutions to sat problems | |
US10515169B1 (en) | System, method, and computer program product for computing formal coverage data compatible with dynamic verification | |
CN103838908B (zh) | 一种基于aig和sat求解器的gste模型检测方法 | |
CN106886487A (zh) | 用于评价fpga软件可靠性的方法 | |
US20080195992A1 (en) | System and Method for Generating Constraint Preserving Testcases in the Presence of Dead-End Constraints | |
Cohen et al. | SystemVerilog Assertions Handbook:--for Formal and Dynamic Verification | |
US8065641B2 (en) | Automatically creating manufacturing test rules pertaining to an electronic component | |
Flint et al. | Perceptron learning of SAT | |
Ritirc | Formally Modeling and Analyzing Mathematical Algorithms with Software Specification Languages & Tools | |
Ehlers | How Hard Is Finding Shortest Counter-Example Lassos in Model Checking? | |
Katz et al. | Space-efficient bounded model checking | |
Wang et al. | Search space reduction for the non-exact projective NPNP Boolean matching problem | |
Chen et al. | Automatic abstraction refinement for generalized symbolic trajectory evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170825 Termination date: 20180914 |
|
CF01 | Termination of patent right due to non-payment of annual fee |