形式验证中的属性覆盖率的制作方法

文档序号:6507155阅读:252来源:国知局
专利名称:形式验证中的属性覆盖率的制作方法
技术领域
本发明涉及计算机辅助设计(CAD),特别是涉及集成电路形式验证中的属性覆盖率。
背景信息现代逻辑设计的问题之一是验证设计实际上是按其预定的方式工作的。逻辑设计中没有检测到的错误会导致昂贵的重新设计,如果产品已经投放市场,甚至会使消费者失去对产品的信心。
模型检测是验证设计的一种方法。模型检测是用于属性验证的一种形式验证(FV)技术。属性规定了特定电路信号与其他信号相关的各个时间点想要的值。假设有一个设计模型和一些想要的属性,模型检测器如符号模型验证器(SMV)验证该模型在所有可能的输入顺序下是否满足所有想要的属性。上述属性已经使用属性规定语言如计算树逻辑(CTL)规定好。虽然模型检测是一项彻底的FV技术,但是如果用户规定的属性没有检测到程序错误带来的错误行为,该程序错误会逃过模型检测。这些错误行为通常发生在用户没有觉察的一些不明显的角落。当需要手工将规范分解为一组更小、模型检测器能够验证的更易于处理的属性时通常出现这种情况。为减少错误的逃出(escape),用户需要不断地增强已有的属性并且规定新的属性,而不知道附加的验证是不足还是过剩。
逻辑仿真是验证设计的另一种方法。在已有的基于仿真的验证方法学中,使用覆盖量度来改善一套检验程序的质量以及估计验证任务的进展。例如,用于仿真的常用覆盖量度是“代码覆盖率”,其测量仿真期间运用的硬件描述语言(“HDL”)语句的部分。“基于可观察性的代码覆盖率”通过将潜在的错误传播分解为可观察性的点增强了这一度量。“转换覆盖率”是另一种用于控制状态机的度量。这些覆盖率度量通过指出测试程序中的覆盖漏洞而在减少程序错误逃出方面很有效。
但是,用于仿真的已有的覆盖率度量没有直接应用到模型检测,如模型检测任务中的代码覆盖率的自然解释或转换覆盖率度量对于每个属性给出的是无意义的100%覆盖率。逻辑仿真是动态的并且其覆盖率是输入仿真矢量驱动的,而模型检测是静态的,没有任何电路运行概念。与逻辑仿真不同,模型检测工作中程序错误逃出检测的可能性仅依赖于验证的属性的质量。因此,需要的是估计对于设计验证的一组属性“完整性”(也就是质量)的覆盖率度量。
例如,考虑用于计数的模5计数器,以stall(停止)和reset(复位)作为外部输入的CTL公式AG[((-stall∧-reset∧(count=C)∧(C<5))-AX(count=C+1)]这个公式规定了如果stall和reset信号没有声明并且计数器值小于5,则上述计数器在下一步增加1。模型检测器检查整个可达到的状态空间以验证该属性。但是,实际上,仅对满足前提的那些紧接着的后续状态确定了count(计数)的情况的正确性(即其正确增加)。因此模型状态空间的正确性条件的实际检测受到CTL公式的限制。因此,这一属性不能称为提供了100%的覆盖率。这个例子说明了对于形式验证属性需要规定覆盖率测量。
因这个和其他原因,需要本发明。
发明概述本发明的一个方面是一种测量形式验证属性覆盖率的方法。该方法包括接收逻辑设计的一个模型,其中该模型具有多个状态。上述方法还包括接收对上述逻辑设计的模型验证的属性以及接收该属性的一个或多个观测信号。上述方法还包括提供一个覆盖的状态集,在其中检测一个或多个观测信号的值就足以确定验证属性的正确性。
本发明的另一个方面是测量形式验证属性的覆盖率的替代方法。该方法包括接收一个逻辑设计模型,其中该模型具有多种状态。该方法还包括接收对上述逻辑设计的模型验证的属性以及接收该属性的一个或多个观测信号。该方法还包括提供上述属性观测信号的一个覆盖的状态集,其中该组覆盖状态包括每个状态,其中改变状态中观测信号的值则导致该属性失败。
附图简述

图1是一个计算机系统的框图,在其上实现了本发明的一个实施方案。
图2是用于测量形式验证属性覆盖率的一个系统的框图。
图3说明了计算属性覆盖率的一个电路的状态转换图的一部分。
图4说明了计算属性覆盖率的一个电路的第二个状态转换图。
图5说明了计算属性覆盖率的一个电路的第三个状态转换图。
优选实施方案描述在下面优选实施方案的详细描述中,参考了在此作为一部分的附图,并且其中通过图解显示了应用本发明的特定实施方案。需要理解的是,在不违背本发明范围的情况下可以应用其他实施方案并且进行结构上的修改。
下面的详细描述说明了确定状态空间由模型检测验证的属性所覆盖的部分的覆盖率度量。在每个属性中,确定一个信号(或几个信号的命题)作为该属性的观测信号。覆盖率度量测量与上述观测信号相关的一组属性的覆盖率。覆盖率度量确定可到达状态,其中上述观测信号的值确定验证属性的正确性。然后可以使用模型检测算法检测上述观测信号在这些“覆盖”状态的正确性条件以证明该属性正确还是不正确。
详细描述组织如下。第一节描述了一个计算机系统,在其上实现了本发明的一个实施方案。第二节介绍了本发明一个实施方案的概述。第三节描述了形式验证中的属性覆盖率。第四节介绍了计算覆盖率度量的一种方法的一个示范实施方案。第五节提供了形式验证中属性覆盖率的示范实现。最后给出结论。示范计算机系统参见图1,显示了计算机系统100,其中实现了本发明的一个实施方案。计算机系统100包括用于信息通信的总线或其他通信装置101,以及连接到总线101上用于处理信息的处理器102。计算机系统100还包括连接到总线101上用于存储信息和处理器102执行的指令的随机存取存储器(RAM)或其他动态存储设备104(称作主存储器)。主存储器104还可用于在处理器102执行属性覆盖率指令期间存储临时变量或其他中间信息。计算机系统100还包括连接到总线101上用于存储静态信息和处理器102指令的只读存储器(ROM)和/或其他静态存储设备106,以及如磁盘或光盘及其相应盘驱动器的数据存储设备107。数据存储设备107连接到总线101以存储用于在形式验证属性中测量覆盖率的信息和指令。计算机系统100还连接到如阴极射线管(CRT)或液晶显示器(LCD)等连接到总线101上用于将信息显示给计算机用户的显示设备121上。包括字母数字和其他键的字母数字混合输入设备122也连接到总线101,以与处理器102进行信息和命令选择通信。附加用户输入设备可以是连接到总线101上的光标控制设备123,如鼠标、跟踪球、指示笔或光标方向键,用于与处理器102进行方向信息和命令选择的通信,并且用于控制显示器121上光标的移动。连接到总线101上的另一个设备是硬拷贝设备124,可用于在如纸、胶片或类似类型介质上打印指令、数据或其他信息。还要注意,计算机系统100的任何一个或所有部件以及相关硬件可以用于一个实施方案中,但是,应当理解,系统的任何类型的配置可用于其它实施方案中用户需要的各种目的。
存储在计算机可读介质(如RAM、ROM或其他数据存储设备)中的计算机可读指令由计算机系统100的处理器102执行。计算机可读指令使得计算机系统100执行一种下面进一步描述的测量形式验证属性覆盖率的方法。本发明的一个实施方案概述参见图2描述了本发明的一个实施方案概述。图2是用于测量形式验证属性覆盖率的一个系统的框图。图2显示的系统包括输入、处理模块以及一个或多个输出。
输入包括一个属性、一个或多个观测信号,以及电路模型或其他逻辑设计模型。该属性是规定特定电路信号在与其他信号相关的各个时间点想要的值的形式验证属性。在一个实施方案中,上述属性以CTL书写。但是,本领域技术人员将认识到,在不偏离本发明范围的情况下可以采用其他属性规定语言。
上述观测信号是由上述属性规定的一个特定的电路信号。上述观测信号是检测到的信号。在一个实施方案中,该观测信号由用户提供。在一个替代实施方案中,该观测信号由处理模块确定。电路模型是一个集成电路设计模型,与模型检测验证工具一起使用,并且与本发明的上述系统一起使用。
处理模块包括利用模型检测验证工具或在一个替代实施方案中利用仿真检测器执行测量属性覆盖率功能的程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等,其执行特定功能或实现特定抽象数据类型。处理模块提供验证完整性指示。由处理模块执行的覆盖率度量是基于状态而不是路径。下面详细描述了覆盖率度量的示范实施方案。这里使用的术语“状态”同时指状态和输入。在一个状态可以通过几条路径到达意义上状态覆盖率是静态的。
在一个实施方案中,输出包括指示在其中为上述属性检测了观测信号的状态的百分比的覆盖率百分比。附加输出从下面的详细描述中可以很容易地看到。形式验证中的属性覆盖率“公式”(也称作“属性”)规定了特定电路信号在与其他信号相关的各个时间点想要的值。换句话说,每个公式规定某些电路信号的正确性条件并且还规定了这一条件有效的电路状态空间。在正确性条件中检测的一个信号或命题确定为“观测信号”,并且在这一观测信号上定义覆盖率。在一个实施方案中,顺序电路被视为Mealy有限状态机。
定义1有限状态机(FSM)M是一个4元数组<S,TM,P,S1>,其中S是一组有限状态,TMS×S是M在S的成对状态之间的转换关系,并且P={p1,p2,…,pn,q}是一组信号,其中q是观测信号。每个信号是一个代表一组状态的布尔函数S→{T,F},或等效地,每个信号对应一个原子命题。S1S是一个有限状态集。
假设一个属性已由模型检测算法验证对于电路是正确的,本发明定义了按照初始状态可到达的电路状态的一个子集,该属性对于特定观察信号的覆盖率。如果存在一个输入序列作为从初始状态到某个状态的FSM,则从初始状态可以到达该状态。在一个实施方案中,对于观测信号的“一个覆盖集”的状态就是该组可到达的状态,其中上述观测信号的值必须检测以证实满足上述属性。
因此,上述覆盖集中的状态有两个特性。第一,如果上述观测信号的值在上述覆盖集之外的模型的任何状态中改变,仍能满足上述属性。对于上述属性那些状态不检测。第二,如果上述观测信号的值在任何覆盖状态中改变,则上述属性失败。在这个实施方案中,该覆盖状态集是一个最小集。
为确认一个状态是否属于上述覆盖集,该状态中观测信号的值被修改并且评估其对该属性正确性的影响。为实现这一测试,对于给定FSM M的每个状态按如下定义了双FSM定义2假设FSM M=<S,TM,P,S1>,其中P={p1,p2,…,pn,q},并且任何状态sS,则与状态s相关的双 是一个四元数组<S,TM,{p1,p2,…,pn, },S1>,其中 对每个状态t∈S.
按照这个定义,覆盖集状态的一个实施方案定义如下。
定义3假设一个属性f及一个FSM M,该M关于其初始状态集S1满足f,表示为M,S1|=f,如果并且只有在对于任何状态s∈S,上述双FSM满足条件(M^SS1|≠f]]>)(s∈C)时,一组CS才是M对于观测信号q上的f的一个覆盖集。
这个定义独立于属性规定语言并且保证在一个未覆盖的状态中改变上述观测信号的值不会引起该属性失败,而在一个覆盖的状态中改变上述值则会导致该属性失败。这个覆盖状态集是唯一的。因此,其组成了一个必要的并且是足够的集以证实满足该属性。以这种方式定义覆盖状态,因此这些状态上的观测信号的值保证满足该属性规定的正确性条件。因此,覆盖率给出对于上述观测信号该模型的状态空间有多少由验证属性检测过的一种测量。这一定义不排除同一属性中有多个可观测信号。覆盖状态则简单地是每个单独信号的覆盖状态的并集。
为通过矛盾证实覆盖状态集是唯一的,假设对于属性f和观测信号信号q有两个分离的覆盖集C1和C2。因为C1≠C2,必然存在一个状态s属于一个,而不属于另一个,假设不失一般性的s∈C1而 通过覆盖集C1的定义,如果在状态s中值q改变,则属性f失败。这意味着s应该属于所有覆盖集并且因此s∈C2,这是一个矛盾。因此C1=C2,并且覆盖状态集是唯一的。
下面的例子参考图3说明覆盖状态的定义。这个例子计算下面q作为观测信号的简单CTL公式的覆盖率AG(P1→AXAXq)。该公式规定无论何时P1被声明,将来q将被声明两步。图3说明了被计算属性覆盖率的电路的状态转换图300的一部分。因此,为使上述公式有效在图3标记状态302中必须声明q。这个标记状态302是一个覆盖状态。检查显示上述定义3中规定的条件对于这个状态成立。注意还有其他声明了q的状态304、306,但是因为其对于给定公式的正确性不关键,因此没有标记为覆盖状态。
在一个替代实施方案中,覆盖集的一个不太严格的定义是对于检测观测信号值以确定CTL公式正确性的一组充分、但不必要状态。这种情况下的覆盖集既不唯一也不是最小的。
定义4带有一组给定初始状态的给定模型上“观测信号”的公式的覆盖率计算为被覆盖模型的可到达状态数的百分比 一组属性的覆盖率简单地是来自每个单独属性覆盖率集的并集。
因此对于一个特定观测信号完全或100%的覆盖率意味着该信号的值已经被电路所有可到达状态上的验证属性检测。这作为属性完整性和验证质量的一个非常有用的指标。更重要的是,覆盖率度量的公式表示可以根据未覆盖状态识别低覆盖率区域,因此用户可以编写额外属性以增加覆盖率。
在一个替代实施方案中,这一覆盖率度量还可用于仿真测试的覆盖率测量。在这种情况下,覆盖状态定义为仿真检测器在仿真期间检测观测信号值的状态。
上述覆盖率的定义可应用于任何属性规定语言。这一节详细描述剩下的部分介绍了为ACTL子集,CTL通用子集计算覆盖集的一种算法的一个示范实施方案。
我们接受的ACTL子集定义如下f∷=b|b→f|AXf|AGf|A[f∪g]|f∧g其中b是命题公式并且f和g是子集中的临时公式。注意AFf可以等价地写为A[True U f]并且不需要单独对待。这个子集中缺少的唯一ACTL结构是临时公式的逻辑和。
对这个ACTL子集应用定义3,可以准确计算对于上述公式正确性关键的观测信号的值的状态集。但是,以这种方式应用定义3导致一些意外的覆盖率。“偶然性属性”的覆盖率非常低。例如,考虑属性A[P1U q]和图4所示的电路的状态转换图。该属性规定在来自初始状态的任何一条路径上P1应该高直到观测信号q被声明为止。直观地,看来q被声明处遇到的第一个状态应该被覆盖(如图4所标记)。但是,因为P1在这个状态很高,因此在这个状态改变q的值不会导致该属性失败。实际上,在这条路径上没有一个状态被认为由上述定义覆盖。因此,这个属性的覆盖率是零。这与对这一属性的期望值相反。为获得覆盖率更直观的测量,Until公式的两个部分的覆盖率影响需要彼此分离并且每个部分的覆盖率需要单独计算。为达到这一点,ACTL公式的转换定义如下。该转换改变了上述公式的对称性但是保持了语义的等价。
定义5对于一个FSM M,在可接受ACTL子集中指定公式f并且在该公式中指定观测信号q,引入信号q’。信号q’由与观测信号q相同的函数定义。“可观察性变换”通过将f中的q替换为q’来定义(表示为f|q→q’)(b→f)=b→(f)(b)=b|q→q′(AXf)=AX(f)(AGf)=AG(f) (f∧g)=(f)∧(g)f’和g’分别作为(f)和(g)的简写。现在新符号q’是变换公式f’的观测信号。
注意可观测性变换之后的公式在验证正确性方面与原始公式等价。公式的对称结构发生改变的仅有的两种情况是隐含和Until公式。目的是指出从隐含的结果部分提供覆盖率的状态以及从Until公式的每个部分单独提供覆盖率的状态。作为可观测性变换的结果,两个具有不同语法的语义等价公式可提供不同的覆盖率。因此,上述公式的语法更好地捕获用户的验证目的。定义3对变换公式的应用给出覆盖集更直观和实用的测定。可观测性变换与覆盖状态的定义一致,其中覆盖状态集确定为在其中足以检测观测信号的值以确定CTL公式正确性的一组状态。覆盖率计算本节详细描述介绍计算覆盖率度量的方法的一个示范实施方案。该示范实施方案是一个对给定ACTL公式和给定观测信号在FSM的状态空间计算覆盖状态集的递归算法。该算法在初始公式上运算但给出与上述变换公式相关的计算的覆盖状态集。因此,在这个实施方案中,覆盖率的计算不需要可观测性变换应用。后面,证实计算的覆盖集与通过对变换公式直接应用定义3得到的是相同的状态集。
问题综述给定带有一组初始状态S1的FSM M以及一个可接受ACTL公式g如M,S1|=g,对观测信号q计算覆盖状态集和覆盖率。
在g的句法结构上以递归方式计算嵌套公式g的覆盖率。下面的表1总结了这个算法。关于一组起始状态计算了每个子公式的覆盖率。关于起始状态集S0的公式g的覆盖状态集表示为C(S0,g)。向下遍历分析树,用于计算特定子公式覆盖率的起始状态集发生变化,如表所示。对应于M的初始状态集S1(在表1中替换S0=S1)计算最高层公式g的覆盖率,也就是C(S0,g)。
上述算法确保任何覆盖状态中观测信号的值满足该公式规定的正确性条件。如果子公式不涉及观测信号,其覆盖集将是空的。下面给出上述算法中函数的定义。
表1.覆盖集的递归计算
给定命题公式b,令T(b)表示满足b的状态集。注意如果并且只有b在所有起始状态都是真的时,该电路才满足上述属性。被覆盖的这些起始状态的子集确定为其中判定b的满足实际上依赖于观测信号q的值(b也规定了其他信号的条件)的那些起始状态。换句话说,在覆盖状态上改变观测信号q的值必须在该状态证明公式b是假的,否则它会是真的。在上面的表中,由函数depend(b)=T(b)∩T(⫬b|q→⫬q)]]>给出这组状态。
类型b→f,AXf和AGf的公式的计算是直接的。公式b→f规定了公式f在满足判定b的S0中的那些起始状态上必须是真的。对应于起始状态S0的子公式b→f的覆盖集C(S0,b→f)等价于,并且计算为对应于新的起始状态集S0∩T(b)的f的覆盖集C(S0∩T(b),f)。
公式AXf规定f从起始状态集S0开始保持在所有后续状态中。函数forward(S0)给出从S0中的起始状态开始恰好一步可到达的状态。当计算f的覆盖率时这个集成为新的起始状态。forward(S0)={s′′|∃s′∈S0,(s′,s′′)∈TM}]]>AGf规定f具有从S0开始可到达的所有状态。函数reachable(S0)给出从S0开始在任意数量的前向步骤中可到达的状态。这个集成为用于计算f覆盖率的新的起始状态集。 Until运算符的覆盖率估算有点复杂。在图5的状态转换图的帮助下解释A[f1Uf2]的覆盖状态的计算。子公式f1在沿着从S0的一个起始状态(在这个例子中唯一)的路径的状态上验证为真,这样f1为真直到f2第一次变为真。函数traverse(S0,f1,f2)识别沿着从S0中的状态开始的路径的状态,这样f1为真而f2不真直到,但是不包括,f2变为真处的状态。这些状态在图5中由f1标记和标注并且在计算子公式f1的覆盖率时成为新的起始状态集。
traverse(S0,f1,f2)=S′0∪traverse(forward(S′0),f1,f2)其中S′0=S0∩T(f1)∩T(⫬f2).]]>除此之外,从S0前向遍历时第一次遇到的满足f2的状态被认为是计算命题子公式f2覆盖率的起始状态。这些状态在图5中由f2标记和标注并且由函数firstreached(S0,f2)计算。firstreached(S0,f2)=(S0∩T(f2))∪firstreached(forward(S0∩T(⫬f2)),f2)]]>Until公式的覆盖集是从C(traverse(S0,f1,f2),f1)到C(firstreached(S0,f2),f2)的覆盖的并集。
两个子公式的合并的公式的覆盖集简单地是子公式覆盖集的并集,因为为满足合并的公式,两个子公式必须由FSM满足。
正确性定理给定具有初始状态S1和带有观测信号q的可接受ACTL公式g的FSM M,上述算法为转换公式g’=(g)和观测信号q’正确计算由定义3规定的覆盖状态集,其中是可观测性变换。
检验检验是通过引入公式的结构。除了涉及临时运算符的三种情况,所有其他情况可以简单地从覆盖率定义、可观测性变换和算法中获得。AX和AG运算符的情况直接遵循下面的等式
(M,forward(S0)|=f)(M,S0|=(AXf))(M,reachable(S0)|=f)(M,S0|=(AGf))最复杂的情况是Until运算符。在可观测性变换定义中的两个术语对应覆盖率算法的两个集。因为traverse(S0,f1,f2)表示从S0开始的路径上的满足f1但不满足f2直到并且不包括满足f2的状态,直到由C(traverse(S0,f1,f2),f1)计算的覆盖集是A[f’1Uf2]的正确覆盖集。同样,由C(firstreached(S0,f2),f2)计算的覆盖集是 的正确覆盖集。
这个算法与传统符号模型检测算法有相同的复杂程度。两者都基于采用二进制决策图表(BDDs)的固定点计算,其在最坏的情况下是指数的。在验证期间计算的子公式的结果可以记住并在覆盖率估算期间使用以达到更有效的应用。实际上,覆盖率估算在某些情况下比验证稍微贵一些,因为其需要计算可到达状态。这涉及对于CTL公式的实际验证不必要的固定点计算。
在上述示范实施方案中,在计算了可到达状态集和覆盖状态集之后,覆盖率估算器给出覆盖率百分比并且在一个实施方案中,打印出未覆盖状态列表。这一输出帮助用户编写额外的属性以覆盖漏洞。覆盖率估算器还通过执行从初始状态到未覆盖状态经过最短路径的宽度第一次可到达性分析以及生成对于该路径的输入序列打印到未覆盖状态的轨迹。形式验证中属性覆盖率的示范实现上述覆盖率度量的实施方案在验证完整性上获得高置信度方面很有用。在正规规定和验证周期完成并且用户对验证完整性相当有信心之后,应当使用测量想要属性的覆盖率的覆盖率估算器模块。在一个实施方案中,由模型检测模块执行验证。覆盖率估算器模块则测量想要属性的覆盖率。
采用这里介绍的度量,验证工程师能够识别电路显示的没有经过任何属性检测的行为。这个过程的第一步是检查覆盖率估算器提供的未覆盖的状态。如果从这步检查中没有马上明显看出如何增强验证以覆盖漏洞,则第二步是指示本发明的系统生成特定未覆盖状态的轨迹。这些轨迹是导致未覆盖状态的电路行为的证据并且提供关于获得更高覆盖率需要的额外属性的特性的有力线索。然后用户可以通过编写额外属性或者通过减弱前项或增强后项改善已有属性来增强验证。在一个实施方案中,对于每个主要输出信号和每个重要电路信号建议的最小覆盖率要求是100%的覆盖率。
未被属性覆盖的状态集的很大一部分是在其上观测信号值与电路正确性不相关的状态。在一个实施方案中,用户提供这些“不关心”的状态作为状态变量的一组命题并且排除在覆盖率空间之外以给出更实际的覆盖率估计。
模型检测系统表达的公平条件限制系统在属性验证期间只看公平路径,也就是公平限制通常是无限地真实的路径。因此公平限制的存在要求覆盖率估计算法也忽略未指向公平路径的状态。在一个实施方案中,覆盖率作为沿公平路径可到达的状态部分计算。
按照本发明的覆盖率估算器模块与一个版本的SMV一起实现并且应用于来自一个微处理器设计的电路。选择来自每个电路的信号作为观测信号并且应用估算器确定验证属性的覆盖率以检测上述信号的行为。下面的表2给出测量了覆盖率的观测信号的名称,为该信号验证的属性的数量,为给定属性集获得的覆盖率,以BDD节点数量和在HP9000工作站上按秒计的运行时间方式测量的模型检测性能,以及覆盖率估算器的运行时间性能。
表2覆盖率结果
电路1是一个优先级缓存,按照其优先级(高或低)排定和存储进入项。该模型有24个变量。给定已经在缓存中项的数量和输入项数量,上述属性规定在下一时钟缓存中的项的正确数量。例如,如果缓存中目前有B个项和I个输入项并且B+I小于缓存的大小,则下一时钟该缓存应该有I+B个项。高或低的优先级项由不同属性检测,并且其数量被作为观测信号。验证属性集应该提供所有可能情况的完全分析,但是当缓存是空的并且有低优先级的项输入时会有遗漏的情况没有覆盖到,这些项需要存储。编写一个简单的额外属性以覆盖这种情况。这一属性的验证失败并且实际上反映了缓存设计中有程序错误。
电路2是一个由读指针、写指针和换行位控制的循环队列,无论何时哪个指针绕回该队列就进行切换(toggle)。其也有停止、清除和复位信号作为输入。编写属性以验证换行位、完整和空信号的正确操作。该模型有38个变量。对完整和空信号的覆盖率是100%。但是换行位的覆盖率是60%。检查未覆盖的状态,编写了三个额外属性仍没有达到100%覆盖率。跟踪通向这些未覆盖状态的输入/状态序列并发现当写指针绕回时,如果声明停止信号,则换行位的值就没有检测。在属性规定期间很容易遗漏这种细微的角落情况。增加一个属性来规定换行位在这种情况下保持不变并获得100%覆盖率。
电路3是一个处理器在指令解码阶段的管道。管道数据通路的宽度抽象为一个单一比特。验证这个信号上的属性以检测通过管道的数据的正确分段,而不是实际的数据转换。这些属性通常采用的形式是到管道的一个输入在stall上给定确定适当条件时最终出现在输出处。最终模型有15个变量。通过识别未覆盖状态并且增强属性集,覆盖率增加到100%。
这些例子说明覆盖率估计可以改善FV的质量。运行时间和存储器需要与实际验证需要的相似。而且,上述例子是常用FV属性的一个很好的代表缓存涉及的句法简单的属性,如AG(p1→AX…AXp2)以及管道需要的以嵌套方式使用Until操作符的偶然性属性,如AG(p1→A[p2UA[p3Up4]])。结论上述详细描述已经描述了用于基于模型检测的验证方法论的覆盖率度量。还描述了一个适用于CTL重要子集的用于模型检测的覆盖率度量的示范实施方案。覆盖率度量识别属性覆盖漏洞,其能够发现逃过模型检测过程的程序错误。
虽然这里说明和描述了特定实施方案,但本领域的普通技术人员应当理解,任何被考虑以获得相同目的的方案可以替代上述特定实施方案。这一申请目的是覆盖本发明的任何修改或变化。因此,本发明仅受权利要求书和其等同物的限制。
权利要求
1.一种测量形式验证属性覆盖率的方法,该方法包括接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及提供一组覆盖状态,在其中检测一个或多个上述观测信号的值足以确定该属性的正确性。
2.权利要求1的方法,还包括为该属性的一个或多个观测信号确定一组可到达状态;以及计算覆盖率百分比,其中覆盖率百分比是可到达状态集的一部分。
3.权利要求2的方法,还包括如果覆盖率百分比小于100%,则提供一组未覆盖的状态。
4.权利要求3的方法,还包括显示包括未覆盖状态集的状态列表。
5.权利要求4的方法,其中状态列表包括可以由用户按需要修改的未覆盖状态集。
6.权利要求1的方法,还包括显示包括覆盖状态组的状态列表。
7.权利要求6的方法,其中状态列表包括可以由用户按需要修改的覆盖状态集。
8.权利要求1的方法,还包括生成通向覆盖状态集中一个状态的状态轨迹。
9.权利要求3的方法,还包括生成通向未覆盖状态集中一个状态的状态轨迹。
10.权利要求9的方法,其中生成上述轨迹还包括执行从一个或多个初始状态到未覆盖状态经过最短路径的宽度第一次可到达性分析以及生成对于该最短路径的输入序列。
11.一种测量形式验证属性覆盖率的方法,该方法包括接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及为该属性的一个或多个观测信号提供一个覆盖状态集,其中该覆盖状态集包括在其中改变该状态中上述观测信号的值导致该属性失败的每个状态。
12.权利要求11的方法,还包括为该属性的一个或多个观测信号提供一个未覆盖状态集,其中该未覆盖状态集包括其中观测信号的值对该属性正确性没有影响的每个状态。
13.权利要求11的方法,还包括为该属性的一个或多个观测信号确定一个可到达状态集;以及计算覆盖率百分比,其中覆盖率百分比是可到达状态集的一部分。
14.权利要求11的方法,还包括显示一个包括覆盖状态集的状态列表。
15.权利要求14的方法,其中上述状态列表包括可由用户按需要修改的覆盖状态集。
16.权利要求12的方法,还包括显示一个包括未覆盖状态集的状态列表。
17.权利要求16的方法,其中状态列表包括可由用户按需要修改的未覆盖状态集。
18.权利要求11的方法,还包括生成通向一个覆盖状态的状态轨迹。
19.权利要求12的方法,还包括生成通向未覆盖状态之一的状态轨迹。
20.权利要求19的方法,其中提供上述轨迹还包括执行从一个或多个初始状态到未覆盖状态经过最短路径的宽度第一次可到达性分析以及生成对于该最短路径的输入序列。
21.一种测量形式验证属性覆盖率的方法,该方法包括为第一个属性的第一个观测信号提供第一个覆盖状态集;为第二个属性的第二个观测信号提供第二个覆盖状态集;以及在第一个覆盖状态集和第二个覆盖状态集之间执行合并操作,以便为第一个属性和第二个属性确定第三个覆盖状态集。
22.一种制品包括一种包括指令的计算机可读介质,当执行这些指令时导致计算机接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及提供一组覆盖状态,在其中检测一个或多个上述观测信号的值足以确定该属性的正确性。
23.权利要求22的制品,其中计算机可读介质还包括指令,当执行这些指令时导致计算机为该属性的一个或多个观测信号确定可到达状态集;并且计算覆盖率百分比,其中覆盖率百分比是可到达状态集的一部分。
24.权利要求22的制品,其中计算机可读介质还包括指令,当执行这些指令时导致计算机为该属性的一个或多个观测信号提供未覆盖状态集。
25.一种制品包括一种包括指令的计算机可读介质,当执行这些指令时导致计算机接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及为该属性的一个或多个观测信号提供一个覆盖状态集,其中该覆盖状态集包括在其中改变状态中一个或多个上述观测信号的值导致该属性失败的每个状态。
26.带有计算机可执行模块的计算机可读介质包括用于验证逻辑设计满足一个或多个属性的模型检测模块;以及用于测量一个或多个属性覆盖率的覆盖率估算器模块。
27.权利要求26的计算机可读介质,其中用计算树逻辑属性规定语言规定了一个或多个属性。
28.一种测量仿真测试覆盖率的方法,该方法包括接收一组仿真测试;接收一组仿真检测器;接收一组观测信号;以及为一个或多个观测信号提供一个覆盖状态集,其中该覆盖状态集包括在仿真测试期间,仿真检测器在其中检测了上述观测信号值的每个状态。
29.一种测量形式验证属性覆盖率的方法,该方法包括接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及提供一组覆盖状态,在其中检测一个或多个上述观测信号的值足以确定该属性的正确性。
30.一种测量形式验证属性覆盖率的方法,该方法包括接收一个逻辑设计模型,其中该模型有多个状态;接收一个为该逻辑设计的模型验证的属性;接收一个或多个该属性的观测信号;以及为该属性的一个或多个观测信号提供一个覆盖状态集,其中该覆盖状态集包括在其中改变该状态中一个或多个上述观测信号的值导致该属性失败的每个状态。
全文摘要
本发明的一个方面是一种覆盖率度量以确定由模型检测验证的属性覆盖的状态空间部分。在每个属性中,确定一个信号(或几个信号的命题)作为该属性中的观测信号。覆盖率度量测量与该观测信号相关的一组属性的覆盖率。该覆盖率度量确定可到达状态,其中上述观测信号的值确定验证属性的正确性。可采用一种模型检测算法来检测在这些“覆盖”状态中上述观测信号上的正确性条件,以证明该属性是正确的或是不正确的。
文档编号G06F17/50GK1421013SQ00809255
公开日2003年5月28日 申请日期2000年6月20日 优先权日1999年6月20日
发明者Y·V·霍斯科特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1