当前位置: 首页 > 专利查询>复旦大学专利>正文

同步时序电路时序深度计算方法技术

技术编号:2857023 阅读:188 留言:0更新日期:2012-04-11 18:40
本发明专利技术属超大规模集成电路技术领域,具体为一种同步时序电路时序深度计算方法,该方法以可满足性算法引擎为基础,数据结构采用可达状态的显式存储方式来降低可满足性算法的负担,具体步骤包括状态的初始化、后续状态的计算、历史状态的遍历、新状态的存储、冗余状态的剔除和算法引擎的复位等。本发明专利技术方法的运行效率大大提高。

【技术实现步骤摘要】

本专利技术属于超大规模集成电路
,具体涉及一种超大规模集成电路的模型验证中为保证验证的完备性而计算同步时序电路时序深度问题的解决方法。
技术介绍
目前,电子硬件系统已经广泛应用于各种关键领域,例如电子商务领域,电话交换网络,高速公路和空中交通的控制系统等等。在这些领域中,系统发生错误所带来的损失通常是不可接受的,但是还是经常发生一些由于硬件系统出错而导致系统发生错误的事件。因此可靠的硬件系统是至关重要的。在当今的硬件设计小组中尽管有70-80%人从事验证工作,但是有错误的芯片还是会被生产出来,并且直到用户遇到后才会被发现,从而导致重大的商业损失。在超大规模集成电路的验证领域中,最常使用的验证方法是基于信号模拟的方法。但是由于设计复杂度的不断提高,这种验证策略变得越来越缺乏效率。例如,据Intel公司报道,在奔腾四微处理器的验证过程中,共模拟了超过2000亿个时钟周期,但是如果当微处理器运行在1GHz的主频下时,这只相当于微处理器运行了两分钟。此外,基于模拟的验证策略也不能保证验证的完备性在最好的状态下,基于模拟的验证方法也只能将设计出错的可能性降低到一个可以接受的水平,而不能保证设计功能百分之百的正确性。作为替代方法,形式验证方法被提出并且在许多工程项目中得到使用。为了能在设计早期发现设计中的错误,模型校验的方法被广泛的使用。基于有界模型校验的方法在设计达到10万门数量级时仍可以得到非常好的结果。但是有界模型校验方法存在一个算法本身固有的问题,即在给定的界限内,不能给出完备性的证明。为了解决这个问题,用于计算电路时序深度的算法被提出。在得到电路的时序深度后,就可以给出有界模型校验的所需计算的最大深度,从而给出完备性解释。目前,时序深度算法主要是基于可满足性引擎的。在其他算法中,首先将时序深度的计算问题转化为一个定量布尔方程式QBF(Quantified Boolean Formula)。但是QBF的计算有两个主要的障碍。首先,量词和取反操作不能简单的用于可满足性算法引擎。其次,路径的查询运算有遍历操作,过于费时。因此人们对QBF进行了化简,将一步QBF运算变为两步可满足性运算。虽然步骤增加了,但是由于运算变得更简单了,从实验结果来看,速度还是可接受的。但是该算法还有一个很大的缺点,当时序深度很深的时候,运算规模往往会超过可满足性算法引擎的处理能力。因此从实际处理能力上来讲,单纯使用可满足引擎的算法应用范围受到很大的限制。
技术实现思路
本专利技术的目的在于提出一种速度快的基于可满足性算法引擎的计算同步时序电路时序深度的方法。本专利技术提出的时序电路的时序深度的计算方法,以可满足性算法引擎为基础,数据结构采用状态显式存储方式,来降低可满足性算法引擎的负担。由于状态空间的显式存储,降低了算法中可满足性引擎的运算规模。虽然可满足性算法引擎的调用次数增加了,但是由于每次调用时问题的规模都不大,所以速度仍然快于单独使用可满足性引擎的算法。根据本专利技术,解决时序电路设计的时序深度计算的方法包括如下步骤状态的初始化、后续状态的计算、历史状态的遍历、新状态的存储、冗余状态的剔除和算法引擎的复位。具体内容如下1、状态的初始化读取实际的设计电路,从中抽取出有限状态机模型,该模型至少包含状态转换方程和系统初始状态集合,然后完成初始化任务,如内部变量的初始化;2、后续状态的计算建立一个表示系统状态转换方程的CNF式,用该CNF式来计算某一当前状态的后续状态;3、历史状态的遍历与冗余状态的剔除遍历历史状态空间,确定后续状态是否为新出现的状态,如果是,则在历史状态中存储该状态;如果不是,则将该状态加入用于计算后续状态的CNF式中,用于剔除冗余状态;4、新状态的存储记录是否有新的状态出现,如果有,清空当前状态的集合并将出现的新状态变为下一深度的当前状态;如果没有新的状态出现,则当前的电路深度就是该有限状态机的时序深度,返回该值;5、算法引擎的复位将可满足性引擎复位,其中包括将状态变量和输入变量置位;继续重复步骤3、4,直至没有新状态出现。上述实施步骤具体见图1所示。下面进一步介绍本方法中的两个算法点,即后续状态计算和历史状态遍历的实现方法。后续状态计算 首先得到各个状态变量的状态转换函数。然后再根据设计中所列基本门逻辑到交集普通方程式(CNF)表达式的转换关系,将状态转换函数变为CNF式。在本专利技术算法中,将当前状态的赋值加入CNF中,然后调用可满足性算法引擎。每一个CNF式所得到的可满足赋值结果都给出一组后续状态的赋值。将该后续状态赋值变为一个CNF式的子句加到原始的CNF式中,以避免重复。然后判断该后续状态是否为新状态,如果是新状态,则把该状态加入到历史状态集合中,反之则不做任何操作。当不再有新状态出现时,结束迭代运算操作。在实际电路中,状态转换函数一般不会特别复杂,所以可满足性算法的引擎一般总能达到非常高的速度。由于本算法在每一次计算后续状态的运算中不用大幅修改CNF式,因此寻找新状态的时间大概保持在一个常数的量级。这样即使时序深度非常的大,CNF式的规模不会超过目前所有可满足性算法引擎的计算能力。历史状态的存储为了高效地存储的系统的历史状态,本专利技术的存储的数据结构采用二叉搜索树形式。由于预先很难预测到历史状态的数量等重要信息,因此采用链表存储表示的二叉树。并且由于每个状态的编码都不同,而我们仅需要快速的查找功能,因此本专利技术初始实现的数据结构为二叉搜索树(Binary Search Tree),其定义如下二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树1.每个结点都有一个作为搜索依据的关键码(key),所有结点的关键码互不相同;2.左子树(如果存在)上所有结点的关键码都小于根结点的关键码;3.右子树(如果存在)上所有结点的关键码都大于根结点的关键码;4.左子树和右子树也是二叉搜索树。为了提高二叉搜索树的效率,减少树的平均搜索长度。我们在改进的实施中采用了高度平衡二叉搜索树的算法。该算法在插入一个新结点时调整树的结构,使得二叉搜索树保持平衡,从而尽可能降低树的高度,减少树的平均搜索长度。高度平衡二叉搜索树的定义如下一棵高度平衡二叉搜索树或者是一个空树,或者是具有下列性质的二叉搜索树它的左子树和右子树都是高度平衡二叉搜索树,且左子树和右子树的高度之差的绝对值不超过1。若设在新结点插入前高度平衡二叉搜索树的高度为h,结点个数为n,则插入一个新结点的时间是O(h)。这与一般的二叉搜索树相同。在最坏情况下,在一般二叉搜索树中插入一个新结点所需的时间为O(n)。而对于高度平衡二叉搜索树来说,最坏搜索高度为 完全可以满足本专利技术方法的要求。国际上对于时序电路的验证给出了许多供测试的实例。评价的标准是看不同的测试实例下的运行时间,为保证公平性,一般选择相同的平台。由本专利技术提出的解决可满足问题的方法记为FDSDC(已编制成相应算法程序),与国外最新的方法比较SDC03(2003年)。算法的实现采用C++语言,并利用Zchaff作为SAT-Solver来计算电路的后续状态。程序在主频为2GHz的P4PC上运行,物理内存1GBytes,测试实例为ISCAS’89的10个实例。该测试环境与SDC03相同,具体运行结果见下表。 本文档来自技高网
...

【技术保护点】
一种同步时序电路时序深度计算方法,其特征在于以可满足性算法引擎为基础,数据结构采用可达状态的显式存储方式,来降低可满足性算法引擎的负担,具体步骤如下:(1)状态的初始化:读取实际的设计电路,从中抽取出有限状态机模型,该模型至少包含状 态转换方程和系统初始状态集合,然后完成初始化任务化;(2)后续状态的计算:建立一个表示系统状态转换方程的CNF式,用该CNF式来计算某一当前状态的后续状态;(3)历史状态的遍历与冗余状态的剔除:遍历历史状态空间,确定后续状态 是否为新出现的状态,如果是,则在历史状态中存储该状态;如果不是,则将该状态加入用于计算后续状态的CNF式中,用于剔除冗余状态;(4)新状态的存储:记录是否有新的状态出现,如果有,清空当前状态的集合并将出现的新状态变为下一深度的当前状 态;如果没有新的状态出现,则当前的电路深度就是该有限状态机的时序深度,返回该值;(5)算法引擎的复位:将可满足性引擎复位,其中包括将状态变量和输入变量置位;继续重复步骤3、4,直至没有新状态出现。

【技术特征摘要】

【专利技术属性】
技术研发人员:张忠林唐璞山
申请(专利权)人:复旦大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1