一种fpga组合逻辑系统顺序规范的形式化验证方法

文档序号:6536212阅读:386来源:国知局
一种fpga组合逻辑系统顺序规范的形式化验证方法
【专利摘要】本发明公开了一种FPGA组合逻辑系统顺序规范的形式化验证方法,包括1)根据FPGA组合逻辑系统的操作顺序规范,得到一个VHDL程序;2)针对所述VHDL程序,建立Petri网模型;3)根据所述Petri网模型,建立可达图;4)选中所述可达图中所有稳定的门电路输出状态;5)根据所述FPGA组合逻辑系统的操作顺序规范,产生包括计算树时态逻辑公式的控制规范;6)检测所述可达图中的稳定的门电路输出状态是否满足所述控制规范;若存在不满足的状态,则该状态存在错误,因此根据产生该错误状态的可激发变迁,定位所述VHDL程序中的错误语句;若所有状态均满足,则所述VHDL程序符合设计要求。本发明逻辑严谨完备、复杂度低。
【专利说明】—种FPGA组合逻辑系统顺序规范的形式化验证方法
【技术领域】
[0001]本发明涉及一种FPGA组合逻辑系统顺序规范的验证方法,特别涉及一种FPGA组合逻辑系统顺序规范的形式化验证方法。
【背景技术】
[0002]现场可编程门阵列(FPGAField-Programmable Gate Array)是在 PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它的出现给数字系统设计带来深远的影响。由于FPGA具有运行速度快、功耗较小、灵活性强且方便二次修改、时序控制能力强、开发周期短、前期投资风险小、产品上市速度快等优势,所以FPGA被广泛应用于通信、军事、医疗、汽车电子、工业控制、消费产品等重要领域。
[0003]现在流行的FPGA设计方式是以VHDL或者Verilog语言作为硬件输入描述,再通过综合器综合使硬件描述语言映射到逻辑电路上,然后再采用FPGA产商提供的工具进行布线布局,将综合产生的逻辑电路快速烧录至FPGA上。这样的设计流程,综合以及后面的布线布局工作都是基于硬件描述语言,所以硬件语言描述的好坏直接影响了电路功能。然而,随着FPGA数字系统设计规模不断增大,测试和验证的重要性也日益明显。为了成功设计一个复杂数字系统,每个阶段都要进行正确性验证,不仅是程序语法语义的验证,还包括系统逻辑功能的验证,以保证设计中的错误早期发现并去除,提高系统的安全性和可靠性。
[0004]数字电路主要的验证方法是模拟和仿真。模拟验证是传统的,而且目前仍然是主流的验证方法。模拟验证是将激励信号施加于设计,进行计算并观察输出结果,并判断该结果是否与预期一致。模拟验证的主要缺点是非完备性,即只能证明有错而不能证明无错。因此,模拟一般在验证初期用来发现大量明显的设计错误,而难以发现复杂微妙的逻辑错误。模拟验证还严重依赖于测试向量的选取,而合理充分地选取测试向量,达到高覆盖率本身就是一个十分艰巨的任务。设计者不能预测所有错误的可能模式,所以尚未发现某个最好的覆盖率度量。即使选定了某个覆盖率度量,验证时间也是一个瓶径。
[0005]仿真验证在原理上与模拟验证类似,只是将模拟验证的三个主要部分即激励生成、监视器和覆盖率度量集成起来,构成测试基准(testbench),用一些可编程器件或者微型处理器等实现。仿真比模拟的验证速度快得多,其缺点是代价昂贵,灵活性差。
[0006]目前验证困难往往来自以下几个方面:
[0007](I)系统复杂度的不断增大。一直在遵循Moore定律的IC制造技术使得设计者在单个芯片上集成了更多的IP核、内存、总线等,构成非常复杂的系统。与此鲜明对照,验证技术的发展落后于IC制造能力。这使现有的验证工具越来越不能胜任验证需求。
[0008](2)上市时间的不断缩短。目前电子产品的更新换代之快反映了对设计周期不断缩短的市场竞争要求。验证过程所耗费的时间一般占总设计周期的三分之二,甚至达到80%以上。因此,对验证的合理要求就是:尽量提高速度以溶入设计流程中。尤其在设计早期,在高层次发现设计错误,可以极大地降低设计返工的成本。
[0009](3)对于应用在安全苛求系统领域(如铁路系统、航空航天、能源发电等)中的数字系统来说,程序的逻辑错误是不允许发生的。程序一旦出现逻辑错误,将对国家和社会造成不可估量的损失,如1994年,奔腾处理器被发现在执行某个特定的浮点运算时出现错误;1996年欧洲航天局研制的阿里亚娜五型火箭在发射后不到40秒爆炸事件等。
[0010]为了提出更完善的验证技术,来自学术界和工业界越来越多的人提出了形式化验证的方法。形式验证就是从数学上完备地证明系统是否实现了设计者的意图。这意味着首先要用某种语言和逻辑构造系统的数学模型,然后运用严格的数学推理来证明设计的正确性。形式验证的主要优点是完备性,能够完全断定设计的正确性。而由德国科学家Carl.Adam.Petri于1962年在其博士论文《用自动机通信》中首次提出的形式化语言——Petri网,近年来被广泛地用于分析离散事件系统。Petri网以图形和数学为基础,是一种FPGA组合逻辑系统顺序规范的形式化验证方法研究系统性质和行为的形式化语言。Petri网适用于异步、并发系统的分析,具有很强的模拟能力,又有严谨的数学表达式,具有直观、易懂等特性。
[0011]FPGA系统的每一个状态都能对应于Petri网系统的一个标识,Petri网的动态行为包含了 FPGA系统的行为,刻画了 FPGA组合逻辑系统工作过程中各个变量之间的逻辑关系和输出变量的变化过程,因此利用Petri网的可达图分析法可以很好地分析和模拟程序的运行。但是Petri网描述的是一个比FPGA系统更复杂的并发系统,理论上只要变迁满足激发条件就能被激发,由于激发没有先后顺序,容易造成死循环,在进行门电路逻辑运算产生门电路输出状态的同时,可能输入量也在不断变迁,因此会生成很多由于Petri网本身性质引起的而与实际系统无关的中间状态,这样就造成了状态空间爆炸的问题,也会给下一步的程序验证带来很大的困难。
[0012]需要说明的是,CTL(计算树时态逻辑)是一种分支时间逻辑,目前在模型检测中选用次数最多的时态逻辑语言,其时间模型是一个树状结构,其中未来是不确定的。未来有不同的路径,其中的任何一个都可能是现实的“实际”路径。
[0013]CTL公式是由原子命题、逻辑连接符、路径量词和时态算子四部分组成:
[0014](I)原子命题:描述一个系统状态的最基本元素,只有“真(TRUE) ”或“假(FALSE) ”两种状态;
[0015](2)逻辑连接符:用于表示某一个或某几个原子命题状态的连接符号。常用逻辑连接符与“ λ ”、或“ V ”、与r V’、蕴含“一”;
[0016](3)路径量词:用于表示树状图中的分支结构。有全部路径量词A(All):表示从指定状态开始的所有路径;存在路径量词E(Exist);表示从指定状态开始存在某一条路径;
[0017](4)时态算子:用于表示树状图中某一分支路径上,某一个指定状态的时间属性,即它与前后状态之间的关系。包括G(Global):表示在某分支路径上从指定状态开始和其将来所以的状态;F (Future):表示在某分支路径上从指定状态开始未来的某一个状态;X(Next):表示在某分支路径上从指定状态开始的下一个状态;U(Until):表示在某分支路径上从指定状态开始直到某一个状态为止。
[0018]通过Backus-Naur范式归纳定义CTL公式为
[0019]
【权利要求】
1.一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,包括如下步骤: 1)根据FPGA组合逻辑系统的操作顺序规范,得到一个描述所述FPGA组合逻辑系统的VHDL程序;其中,所述VHDL程序包括设定所述FPGA组合逻辑系统的输入量、输出量,以及所述输入量和输出量之间的逻辑关系,所述输入量和输出量均为布尔变量; 2)针对所述VHDL程序的输入量、输出量,以及所述输入量和输出量之间的逻辑关系,建立Petri网模型;其中,所述Petri网模型包括所述VHDL程序中各变量的状态、各状态之间的变迁,及各变迁的激发条件; 3)根据所述Petri网模型中各个变量的状态、各状态之间的变迁,及各变迁的激发条件,同时通过设定变迁激发的先后顺序,建立所述FPGA组合逻辑系统的可达图;其中,所述可达图包括输入状态节点、门电路输出状态节点,以及各节点之间的连接关系; 4)选中所述可达图中所有由单个稳定输入量所产生的单个稳定的门电路输出状态;其中,所述稳定的门电路输出状态由所述可达图中所有输入状态节点的上一个门电路输出状态节点表示; 5)根据所述FPGA组合逻辑系统的操作顺序规范,直接得出所述FPGA组合逻辑系统的门电路输出状态,并产生包括计算树时态逻辑公式的控制规范; 6)验证所述VHDL程序 :检测所述可达图中的每个稳定的门电路输出状态是否满足所述控制规范中的计算树时态逻辑公式;若其中一个状态不满足,则该状态存在逻辑错误,通过找到产生该错误状态的可激发变迁,从而定位所述VHDL程序中的错误语句;若所有状态均满足,则所述VHDL程序符合设计要求。
2.如权利要求1所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤2)中,所述Petri网模型是一个二元组(N,mQ),其中N= (P,T,F),P是库所的有限集合,T是变迁的有限集合,F^(PxT)O(TxP)表示连接库所和变迁有向弧的集合,m0是Petri网的初始状态;另外T = Tin U Tout, Tin表示输入量变迁集合,Twt表示门电路输出变迁集合,Te,in是可激发的输入量变迁集合,Te,out是可激发的门电路输出变迁集合,并且Te,in C 7In J Te,out C Tout ;其中输入量变迁用于产生输入量的状态转换,门电路输出变迁用于产生输出量的状态转换,Te,in包含输入量变迁被激发的条件,Tejout包含门电路输出变迁被激发的条件。
3.如权利要求1或2所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,所述Petri网模型的建立方法包括如下步骤: Al、用成对的库所P1,P2表示所述VHDL程序中各个变量的两种状态,用两个圆圈分别表示成对库所P1,P2,用所述圆圈中的点表示托肯,并用所述托肯在成对库所P1,P2中的位置表示所述变量处于哪种状态; A2、在成对库所p1;p2之间加上两个变迁?1;?2,构造四条有向弧分别由P1指向I^t1指向P2? P2指向t2, t2指向P1 ; A3、根据所述VHDL程序,得到关于输入量和输出量的逻辑表达式,称为V2P公式;根据布尔运算规则,将所述V2P公式变形为变迁公式;其中,所述变迁公式包括输出量的两种状态之间的相互变迁与输入量的关系; A4、根据所述变迁公式,将输出量的变迁与所述变迁对应的输入量状态用双向弧连接。
4.如权利要求3所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤A3中,设定VHDL程序中输入量为X1, X2,…,Xn (n e N+),输出量为Y1, Y2……Ym(m e N+),则输出量Yi (I≤i≤m)与输入量Xj (I ^ j ^ η)的逻辑函数表达式为 Yi = ^(XijX2,……,Xn) (I ≤ i ≤ m) (0.1) 式(1.D中的输入量X1, X2,…,Xn(n e N+)之间是进行与、或、非三种基本逻辑运算;为了叙述简便,以下只以一个逻辑输出表达式即以式Y1 = ^(XijX2,……,Xn) (0.2) 进行说明; 通过公式法或者卡诺图法对式(1.2)进行化简,可得到:
5.如权利要求4所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤Α4中,所述双向弧的连接方式为: 首先,根据
6.如权利要求2所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤3)中,所述FPGA组合逻辑系统的可达图是一个三元组GFPeA = <Μ,Ε,W〉,M =Min U Mout7E = Ein U Eout ;其中,集合M中的每个状态对应于系统可达图中的一个节点,Min和Mwt分别表示输入状态集合和门电路输出状态集合,可达图中输入状态节点用实线圈表示,门电路输出状态节点用虚线圈表示;Ε是一个节点指向另一个节点的有向边的集合,W是所述有向边的变迁标记的集合,集合W中的元素是E到T的一个映射;将所述FPGA组合逻辑系统的未完成门电路逻辑运算的状态的集合记为Mnew,并将所述FPGA组合逻辑系统的已完成门电路逻辑运算的状态的集合记为Μ-。
7.如权利要求6所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤3)中,建立所述可达图的方法包括如下步骤: Β1、今Min=Φ,Mout= Φe= Φw=Φ, B2、将所述Petri网模型中FPGA组合逻辑系统的初始状态mQ添加到集合Mnew中; B3、如果半0,则转向步骤B4,否则算法结束,输出FPGA组合逻辑系统可达图GFrcA=<M, E, ff> ; B4、从Mnew中任取一个状态m ; B4.1如果可达图中已存在状态m,则直接转向步骤B4.2,否则在所述可达图中画一个实线圆圈来表示状态m ; B4.2如果集合Mtjld中已存在状态m,则将状态m从集合Mnew中删除,并跳转到步骤B3 ;否则,如果在状态m下,没有可激发的输入变迁和可激发的门电路输出变迁,则将状态m从Mnew中删除,并添加到集合Mtjld中,然后转向步骤B3 ;B4.3如果在状态m下既存在可激发的输入变迁又存在可激发的门电路输出变迁,存在
8.如权利要求6所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,步骤4)中,所述选中可达图中所有输入状态节点的上一个门电路输出状态节点,具体包括将集合Mtjld中所述选中的门电路输出状态节点所对应的状态挑出,并添加到集合Mmw中。
9.如权利要求8所述的一种FPGA组合逻辑系统顺序规范的形式化验证方法,其特征在于,设定所述控制规范为Φ,验证后的FPGA组合逻辑系统可达图为Gv = <MV, Ev, Wv>,其中Mv = Mr U Mf, Ev = Er U Ef, Wv = Wr U Wf ;其中,Mr是验证后状态满足Φ的集合,包含逻辑正确的输入状态或者门电路输出状态;Mf是验证后状态不满足Φ的集合,包含逻辑错误的输入状态或者门电路输出状态;民表示满足Φ的状态之间的有向边集合,Ef是不满足Φ的状态之间的有向边集合表示E1^上的变迁标记集合,Wf表示Ef上的变迁标记集合;则步骤6)中,所述VHDL程序的验证方法包括如下步骤: Cl、从集合Mnew中任取一个待验证的状态IV验证该状态是否满足Φ ,如果状态Iiici满足φ,则将其添加到集合Mr ;如果状态Hitl不满足Φ,则将其添加到集合Mf,在集合Mtjld中找到状态Hitl的上一个输入状态m',并将m'和Hitl之间所有的有向边添加到集合Ef中,同时将所述有向边的变迁标记添加到集合Wf中; C2、如果状态Hitl不满足Φ,则根据Φ,得到状态Hitl所应等价的正确状态1? ;根据Petri网模型,得出状态m'要到达状态Hlr的正确变迁集合;将Wf中!11'和mQ之间的所有变迁与所述正确变迁集合进行比较,得到具体的错误变迁,则根据所述错误变迁的激发条件,定位所述VHDL程序中的错误语句; C3、重复步骤Cl、C2,直到系统的每一个状态都被验证过时,转向步骤C4 ; C4、若集合为Mf空集,则所述VHDL程序符合设计要求。
【文档编号】G06F17/50GK103761387SQ201410024696
【公开日】2014年4月30日 申请日期:2014年1月20日 优先权日:2014年1月20日
【发明者】罗继亮, 陈珑, 黄颖坤 申请人:华侨大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1