首页> 中国专利> 在存在终端约束时生成约束保持测试用例的系统和方法

在存在终端约束时生成约束保持测试用例的系统和方法

摘要

本发明涉及一种用于在存在终端约束时生成约束保持测试用例的系统和方法。通过为从当前时间步长开始的未来K个时间步长中的选定数量的时间步长建立约束求解的滑动窗口,实现了生成测试用例中准确性和计算成本之间的平衡。测试用例在网表的每个状态处求解接下来的K个时间步长的约束,而不是仅尝试求解当前时间步长的约束。通过为每个输入确定从输入到约束的最小长度路径深度或最大长度路径深度来确定K。然后将到网表的输入的最大深度值用作网表的深度。然后,使用此深度来定义约束求解的滑动窗口的宽度。

著录项

  • 公开/公告号CN101241519A

    专利类型发明专利

  • 公开/公告日2008-08-13

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200810005704.2

  • 申请日2008-02-03

  • 分类号G06F17/50(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人于静;李峥

  • 地址 美国纽约

  • 入库时间 2023-12-17 20:36:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-24

    未缴年费专利权终止 IPC(主分类):G06F17/50 授权公告日:20110713 终止日期:20190203 申请日:20080203

    专利权的终止

  • 2017-11-21

    专利权的转移 IPC(主分类):G06F17/50 登记生效日:20171101 变更前: 变更后: 申请日:20080203

    专利申请权、专利权的转移

  • 2011-07-13

    授权

    授权

  • 2008-10-08

    实质审查的生效

    实质审查的生效

  • 2008-08-13

    公开

    公开

说明书

技术领域

本申请一般地涉及改进的数据处理系统和方法。更具体地说,本申请涉及用于在存在终端(dead end)约束时生成约束保持测试用例的系统和方法。

背景技术

典型的集成电路与其设计环境交互。在基于模拟的功能验证过程中,通过测试台对设计环境建模。使用约束对设计环境建模已经得到广泛的工业应用,并且多数验证语言都包括用于指定此类约束的构造。约束通过指定验证算法所研究的任何状态中必须保持的条件,将电路设计的模拟限于合法的输入空间。在语义上,验证工具必须丢弃约束评估(evaluate)为0的任何状态,也就是说,验证工具永远不能产生显示违反设计的某些属性的失败情况。

虽然约束能够进行有效的设计环境建模,但是它们对验证算法提出了一些难题。已经对约束保持测试用例生成进行了广泛的研究(例如,请参阅“Modeling Design Constraints and Biasing in Simulation Using BDDs(J.Yuan et al.,ICCAD 1999)”中所述的SimGen验证工具)。但是,这些解决方案没有解决终端约束的保持,这些终端约束将引起无合法输入激励的状态。此类终端约束将导致使验证工具无法继续验证过程的模拟状态。终端约束往往会降低显式状态分析以及半正式分析的效率。当到达终端状态时,唯一的方法是原路返回较早的状态。

在诸如SimGen验证工具之类的公知方法中,通常将终端约束视为用户错误。因此,由用户决定修复终端约束问题以便不会遇到更多的终端状态。结果,验证工具的模拟模式生成机制在终端约束下效率会明显降低。

发明内容

示例性实施例提供了一种用于在存在终端约束时生成约束保持测试用例的系统和方法。示例性实施例通过将不生成违反终端约束的测试用例中的准确性与计算成本相平衡来生成约束保持测试用例。通过为从当前时间步长开始的未来K个时间步长中的选定数量的时间步长建立约束求解的滑动窗口来实现此平衡。测试用例在网表的每个状态处求解接下来的K个时间步长的约束,而不是仅尝试求解当前时间步长的约束。

使用展开分析以分析约束随时间变化的函数来确定K个时间步长中的选定数量。本质上,对于特定的网表,将评估每个输入以确定从输入到约束的最小长度路径深度,或者如果输入在多个时间步长处影响约束,则可以使用最大长度路径深度。然后将到网表的输入的最大深度值用作网表的深度。然后,使用此深度来定义约束求解的滑动窗口的宽度。

然后,可以使用约束求解的此滑动窗口来模拟网表。对于模拟中的每个时间步长,将针对网表的每个约束执行K步长约束满足分析以确保选定输入值在未来不会违反终端约束。此K步长约束满足分析可以包括约束的K步长展开。然后,可以将产生的输入评价(valuation)存储在跟踪文件中,以便以后在验证对应于网表的集成电路器件中使用。

在一个示例性实施例中,提供了一种用于在存在终端约束时调整测试用例的输入值的方法。所述方法可以包括针对网表的约束分析所述网表以确定与所述约束关联的时间步长参数以便在确定终端约束条件中使用。所述方法还可以包括针对预定数量的时间步长模拟所述网表,以及在每个时间步长处根据所述时间步长参数,针对所述模拟的未来时间步长周期评估所述网表的元素的状态,以判定与所述网表的约束关联的值是否导致终端约束条件。所述方法还可以包括如果与所述网表的约束关联的所述值导致终端约束条件,则调整到所述网表的输入。

此外,所述方法可以包括如果所述网表的约束的值没有导致终端约束条件,则在跟踪文件中记录到所述网表的输入。所述方法还可以包括如果所述网表的约束的值导致终端约束条件,则在跟踪文件中记录到所述网表的调整后的输入。可以将所述跟踪文件输出为测试用例文件,以便在生成用于测试与所述网表关联的集成电路器件的输入向量中使用。可以生成输入向量以便在用于验证与所述网表关联的集成电路器件的操作的验证应用中使用。可以通过将所述输入向量施加到所述集成电路器件的输入来使用所述验证应用对所述集成电路器件执行验证操作。

针对网表的约束分析所述网表以确定与所述约束关联的时间步长参数以便在确定终端约束条件中使用可以包括:使用展开分析来生成一个或多个函数,所述函数指示所述网表元素的哪些输出以及到所述网表的哪些输入将在特定时间步长处影响所述约束。

此外,针对网表的约束分析所述网表以确定与所述约束关联的时间步长参数以便在确定终端约束条件中使用可以包括:对于每个到所述网表的输入,确定所述输入将在该处影响所述约束的值的时间步长,以及选择最大的已确定时间步长值或最小的已确定时间步长值之一作为所述时间步长参数。可以这样选择时间步长参数值:时间步长参数尽可能小但仍足以允许将到所述网表的输入的选定值传播到所述网表的每个约束。

针对网表的约束分析所述网表以确定与所述约束关联的时间步长参数以便在确定终端约束条件中使用可以包括:展开所述网表以生成所展开的网表的有向图,以及根据最小深度试探或最大长度非循环路径试探,对所述网表执行深度优先图形遍历。所述最小深度试探可以在时间0处的输入值影响所述约束之前,遍历所展开的网表的所述有向图,以便为所述网表的每个输入确定最小深度。所述最大长度非循环路径试探可以在到达输入之前,为每个输入确定所述约束的最大扇入深度。

所述方法还可以包括通过在与所述时间步长参数相当的多个时间步长上为每个约束执行约束满足评估来评估所述网表中的寄存器的初始状态,以确保输入的选定值将不会导致所述约束处于终端约束条件。针对预定数量的时间步长模拟所述网表可以包括:通过对于与所述时间步长参数相当的多个时间步长,针对所述网表的约束执行约束满足评估,来为所述模拟的每个时间步长计算一个或多个输入的合法集合以应用于所述网表,以便确保所述一个或多个输入的选定值将不会导致所述约束到达终端约束条件。可以在跟踪文件中记录一个或多个输入的所述合法集合。

在另一个示例性实施例中,提供了一种包括具有计算机可读程序的计算机可用介质的计算机程序产品。当在计算设备上执行时,所述计算机可读程序将使所述计算设备执行有关所述方法示例性实施例的上述操作中的各种操作以及操作组合。

在再一个示例性实施例中,提供了一种系统。所述系统可以包括处理器和连接到所述处理器的存储器。所述存储器可以包括指令,当所述处理器执行所述指令时,所述指令将使所述处理器执行有关所述方法示例性实施例的上述操作中的各种操作以及操作组合。

本发明的这些和其他特征和优点将在以下对本发明的示例性实施例的详细说明中进行描述,或者鉴于以下对本发明的示例性实施例的详细说明,本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。

附图说明

当结合附图阅读时,通过参考以下对示例性实施例的详细说明,可以最佳地理解本发明及其优选使用模式,进一步的目标和优点,这些附图是:

图1是示出可在其中实现示例性实施例的各方面的示意性分布式数据处理系统的图形表示的示意图;

图2是可在其中实现示例性实施例的各方面的示意性数据处理系统的方块图;

图3A是用于解释示例性实施例的示意性方面的示意性网表;

图3B是示出可与示例性实施例一起使用的展开算法的实例的示意图;

图3C和3D示出了根据图3B中所示的实例算法的对网表的展开操作;

图4A示出了通过根据初始状态对图3A中所示的原始网表进行展开分析生成的展开的逻辑表达式;

图4B是示出其中存在初始值逻辑中的输入并且因此该输入在周期0的值与输入寄存器相关的电路的示意图;

图4C是示出其中从输入I_1到约束C存在多个循环路径的电路的示意图;

图5是可用于在终端约束下执行网表模拟的代码的实例;

图6是根据一个示例性实施例的可用于执行K值确定的代码的实例;

图7是根据一个示例性实施例的分析引擎的主要运行组件的示意性方块图;

图8是示出根据一个示例性实施例的在终端约束下模拟网表的示意性操作的流程图;以及

图9是示出根据一个示例性实施例的用于确定约束求解的滑动窗口宽度的示意性操作的流程图。

具体实施方式

示例性实施例提供了一种用于在存在终端约束时生成约束保持测试用例的机制。示例性实施例可以在单个数据处理系统中实现,或者可以跨多个通过一个或多个通信网络相互连接的数据处理系统分布。例如,服务器计算设备可以提供一种可在其他计算设备(例如客户机计算设备)提供的电路模型上运行的电路模型分析引擎。根据示例性实施例,客户机计算设备可以通过一个或多个通信网络与服务器计算设备通信,以控制电路模型分析的应用。例如,电路模型自身最初可以作为硬件描述语言(HDL)文件提供,并被转换为一个或多个网表数据结构。备选地,可以完全在同一计算设备上提供所述电路模型和电路模型分析引擎,以致无需多个计算设备和通信网络。但是,为了进行本说明,假设示例性实施例在其中使用多个计算设备的分布式数据处理系统中实现。

现在参考附图,具体地说参考图1-2,图1-2提供了可在其中实现本发明的实施例的数据处理环境的示意图。应当理解,图1-2仅是示意性的,并非旨在断言或暗示对可在其中实现本发明的各方面或实施例的环境的任何限制。可以对所示环境做出许多修改而不偏离本发明的精神和范围。

现在参考图,图1示出了可在其中实现示例性实施例的各方面的示意性分布式数据处理系统的图形表示。分布式数据处理系统100可以包括可在其中实现示例性实施例的实施例的计算机网络。分布式数据处理系统100包含至少一个网络102,网络102是用于在分布式数据处理系统100内连接在一起的各种设备和计算机之间提供通信链路的介质。网络102可以包括诸如有线、无线通信链路或光缆之类的连接。

在所示实例中,服务器104和服务器106随存储单元108一起连接到网络102。此外,客户机110、112和114也连接到网络102。这些客户机110、112和114可以例如是个人计算机、网络计算机等。在所示实例中,服务器104向客户机110、112和114提供数据,例如引导文件、操作系统映像和应用。在所示实例中,客户机110、112和114是服务器104的客户机。分布式数据处理系统100可以包括其他未示出的服务器、客户机和其他设备。

在所示实例中,分布式数据处理系统100是因特网,同时网络102代表全球范围内使用传输控制协议/网际协议(TCP/IP)协议集来相互通信的网络和网关的集合。在因特网的核心是主节点或主机之间的高速数据通信线路的主干,它包括数以千计的商业、政府、教育以及其他路由数据和消息的计算机系统。当然,分布式数据处理系统100也可以被实现为许多不同类型的网络,诸如例如内联网、局域网(LAN)或广域网(WAN)等。如上所述,图1旨在作为一个实例,并非旨在作为对本发明的不同实施例的体系结构限制,因此,图1所示的特定元件不应被视为对可在其中实现本发明示例性实施例的环境进行限制。

现在参考图2,图2示出了可在其中实现示例性实施例的各方面的示意性数据处理系统的方块图。数据处理系统200是计算机(例如图1中的服务器104或客户机110)的实例,可在其中找到实现本发明示例性实施例的过程的计算机可用代码或指令。

在所示实例中,数据处理系统200采用集线器体系结构,包括北桥和存储器控制器集线器(NB/MCH)202以及南桥和输入/输出(I/O)控制器集线器(SB/ICH)204。处理单元206、主存储器208和图形处理器210连接到NB/MCH 202。图形处理器210可以通过加速图形端口(AGP)连接到NB/MCH 202。

在所示实例中,局域网(LAN)适配器212连接到SB/ICH 204。音频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM)224、硬盘驱动器(HDD)226、CD-ROM驱动器230、通用串行总线(USB)端口和其他通信端口232以及PCI/PCIe设备234通过总线238和总线240连接到SB/ICH 204。PCI/PCIe设备可以包括例如以太网适配器、附加卡以及用于笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。ROM 224可以例如是闪速二进制输入/输出系统(BIOS)。

HDD 226和CD-ROM驱动器230通过总线240连接到SB/ICH 204。HDD 226和CD-ROM驱动器230可以使用例如集成驱动器电子设备(IDE)或串行高级技术附件(SATA)接口。超级I/O(SIO)设备236可以连接到SB/ICH 204。

操作系统在处理单元206上运行。操作系统协调和提供对图2中的数据处理系统200内的各种组件的控制。作为客户机,操作系统可以是以商业方式获得的操作系统,例如MicrosoftWindowsXP(Microsoft和Windows是Microsoft Corporation在美国和/或其他国家/地区的商标)。面向对象的编程系统(例如JavaTM编程系统)可以与操作系统一起运行,并从数据处理系统200上执行的JavaTM程序或应用提供对操作系统的调用(Java是Sun Microsystems,Inc.在美国和/或其他国家/地区的商标)。

作为服务器,数据处理系统200可以例如是运行高级交互执行(AIX)操作系统或LINUX操作系统的IBMeServerTM pSeries计算机系统(eServer、pSeries和AIX是国际商业机器公司在美国和/或其他国家/地区的商标,而LINUX是Linus Torvalds在美国和/或其他国家/地区的商标)。数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理器(SMP)系统。备选地,可以使用单处理器系统。

用于操作系统、面向对象的编程系统以及应用或程序的指令位于存储设备(例如HDD 226)上,并且可以加载到主存储器208以便由处理单元206执行。处理单元206可以使用计算机可用程序代码执行本发明的示例性实施例的过程,所述程序代码可以位于诸如主存储器208、ROM 224之类的存储器中或者位于一个或多个外围设备226和230中。

诸如图2所示的总线238或总线240之类的总线系统可以包括一条或多条总线。当然,总线系统可以使用任何类型的通信结构或体系结构实现,所述结构或体系结构可在与它们相连的不同组件或设备之间提供数据传输。诸如图2的调制解调器222或网络适配器212之类的通信单元可以包括一个或多个用于传输和接收数据的设备。存储器可以例如是主存储器208、ROM 224,或例如在图2中的NB/MCH 202中找到的高速缓存。

本领域的技术人员将理解,图1-2中的硬件可以根据实现的不同而有所变化。除了图1-2中所示的硬件之外或替代图1-2中所示的硬件,还可以使用其他内部硬件或外围设备,例如闪存、等效的非易失性存储器或光盘驱动器等。此外,除了应用于上述的SMP系统之外,还可以将示例性实施例的过程应用于多处理器数据处理系统而不偏离本发明的精神和范围。

此外,数据处理系统200可以采取多种不同数据处理系统中的任一数据处理系统的形式,包括客户机计算设备、服务器计算设备、平板电脑、便携式计算机、电话或其他通信设备、个人数字助理(PDA)等。在某些示例性实例中,数据处理系统200可以是便携式计算设备,其配置有闪存以提供非易失性存储器,以便存储例如操作系统文件和/或用户生成的数据。本质上,数据处理系统200可以是任何公知或未来开发的数据处理系统而没有体系结构限制。

示例性实施例提供了一种用于在存在终端约束时生成约束保持测试用例的系统和方法。示例性实施例的机制使用时间步长的滑动窗口,将针对此窗口评估网络的约束以判定是否可能遇到终端约束。通过早期确定终端约束,可以调整到网络的输入以避免违反约束。通过此方式,即使当电路模型的网络可能具有终端约束时,也可以使用示例性实施例的机制验证提供给电路模型分析工具的电路模型。

再次参考图1,根据示例性实施例的机制,服务器104可以提供分析引擎。客户机计算设备(例如客户机110)可以向服务器104提供电路模型,服务器104的分析引擎将在该模型上工作以便验证电路设计。此电路模型可以包括例如定义电路模型的各种网络的网表数据结构。

因此,使用示例性实施例的机制,将首先定义网表。网表包含有向图,其中顶点表示门并且边表示门之间的互连。门具有关联的函数,例如常数、主输入、组合逻辑(例如‘与’门)以及顺序元件(此后称为寄存器)。寄存器具有两个关联的组件:它们的下一状态函数以及它们的初始值函数。这两个函数在网表的有向图中都表示为其他门。

在语义上,对于给定寄存器,在时间“0”(即初始化或重置时间)时在其初始值门显示的值将被应用为寄存器本身的值。在时间“I”时在其下一状态函数门显示的值将在时间“i+1”时被应用于寄存器本身。

“状态”指对网表的寄存器的评价。那些与寄存器的初始值一致的状态被称为“初始状态”。某些门被标记为“目标”和/或“约束”。目标与要使用验证过程目标进行验证的属性相关,所述验证过程能够找到一种将“1”驱动到目标节点或证明没有此类目标断言的方式。

约束用于“人工”限制可应用于电路设计的输入的激励。具体地说,当搜索将“1”驱动到目标的方式时,验证过程必须遵循“对于每个时间步长(直到并且包括在该处断言目标的时间步长),每个约束门必须评估为逻辑1”的规则。例如,可以添加正好在输入向量评估为偶校验时驱动1的约束。如果没有此约束,验证工具可能会考虑具有对这些输入的偶校验或奇校验的评价。如果具有此约束,则只研究对输入的偶校验评价。因此,在等于或超过任何约束门在该处评估为0的时间步长处,约束可以被视为“无效”跟踪(0、1,随时间变化的对门的评价)。这种现象被称为约束的“跟踪前缀”效应。

终端约束是一种特殊类型的约束,其本质上是顺序的,即约束门在其影响锥面中具有寄存器。终端约束指导致不存在合法输入激励的状态的约束。为了说明与生成终端约束的测试用例关联的问题,考虑以下的简单约束:

I_1→[R_1]→[R_2]→[R_3]→C

其中I_1是主输入,R_1、R_2和R_3是初始值为constant_1的寄存器。寄存器R_3的输出被标记为约束C,意味着R_3的输出应始终为值C,例如constan_1。

公知的方法通过简单算法解决约束满足模拟的测试用例生成:给定网表的当前状态S_j,从状态S_j计算将满足约束的主输入I_j的一组当前评价。虽然此方法在网表没有终端约束的情况下非常有效,但是此方法对确实具有终端约束的网表(例如上述实例的网表)是失败的。

例如,考虑上述网表实例在时间0时的初始状态。无论输入评价为何,一般都满足约束C,因为寄存器R_3的初始值为constant_1。公知的方法可以将输入I_1指定为0或1。如果指定为0,则网表将在3个周期后达到终端状态(R_3=0),并且将无条件地违反约束C,即C将不再为constant_1。网表达到终端状态的原因是因为决定在违反之前的三个时间步长将输入I_1指定为0。但是,如果测试用例生成器已认识到在周期0将输入I_1指定为0将影响周期3中的约束,则它会选择将I_1指定为1而不是0。

测试用例生成的公知方法的一个优点是计算成本低;即使执行为10,000的时间步长模拟,结果成本基本上也不高于执行10,000个单独的单步长模拟。但是,公知方法的缺点是它易于导致与约束相矛盾或违反约束的错误决定,从而在未来导致终端约束,即设置输入以再次遇到终端。

相比之下,纯形式的解决方案将直接使用可满足性算法,以便对于整个模拟持续时间仅生成合法的输入激励,即如果需要为10,000的时间步长模拟,则算法将仅依靠可满足性算法来分析10,000个时间步长的约束,从而仅随机化非关键输入指定。虽然此方法很准确,因为它从不做出在未来与终端约束相矛盾或违反终端约束的决定,但是它在计算上难以处理,因为公知的是,随着检查范围的扩大,暂时的可满足性求解将呈指数地变得复杂。因此,需要一种混合的解决方案来在不做出与终端约束相矛盾的错误决定的准确性以及计算成本之间进行平衡。

为了有助于弥补公知方法的缺点,示例性实施例做出的一项改进是在网表的每个状态处求解接下来K个时间步长的约束,而不是仅尝试求解当前时间步长的约束。例如,在上述实例网表中,示例性实施例求解在每一状态处的4个时间步长的约束C,不仅针对当前时间步长,而且还针对后续3个时间步长。对于上述网表实例,这将防止测试用例生成算法始终将I1指定为0输入值。但是应当指出,这仍是滑动窗口方法,因为即使需要为10,000的时间步长模拟,也不会执行跨多于4个时间步长的约束求解。相反,将执行10,000个“约束求解”,每个求解最多跨4个时间步长。

将进行K值(即求解在网表的每个状态处的约束所用的时间步长数)的选择,以便在计算效率(这要求小的K值)与避免终端状态的准确性(这要求足够大的K)之间进行平衡。示例性实施例使用展开分析来分析网表约束随时间变化的函数。

为了理解与为每个约束选择K值相关的问题,考虑图3A中所示的实例网表是有益的。如图3A所示,网表包括三个输入I_1、I_2和I_3,四个寄存器R_1、R_2、R_3和R_4,以及两个‘与’门A_1和A_2。为简单起见,假设所有寄存器的初始值均为constant_1。

使用展开分析来分析约束C随时间变化的函数。对于某一数量的“k”个周期,展开将同步电路转换为与同步电路产生相同输出的组合电路,其中k是“展开深度”。将首先提供包含有向图的网表,其中顶点表示门并且边表示门之间的互连。门具有关联的函数,例如常数、主输入、组合逻辑(例如‘与’门、‘或’门等)以及顺序元件(例如寄存器)。寄存器具有两个关联的组件,即它们的下一状态函数以及它们的初始值函数。这两个函数在网表的有向图中都表示为其他门。某些门被标记为“目标”和/或“约束”。如上所述,目标与要使用验证过程目标进行验证的属性相关,所述验证过程能够找到一种将“1”驱动到目标节点或证明没有此类目标断言的方式。

图3B示出了根据一个示例性实施例的可用于展开网表的实例展开算法。在实例算法中,函数get_unfolded_circuit_node将在展开电路中创建节点(输入变量或‘与’门)的“周期i实例”(如果它尚不存在)。在‘与’门的情况下,如果需要,所述函数将递归调用自身以构建‘与’门的源。展开电路中的‘与’门输入的源如下所示:

(1)如果输入(在原始电路中)连接到输入变量,则到‘与’门的周期i实例的输入将连接到输入变量的周期i实例;

(2)如果输入连接到另一个‘与’门,则到‘与’门的周期i实例的输入将连接到其他‘与’门的周期i实例;以及

(3)如果输入由寄存器驱动,则:

(a)如果i=0,则到‘与’门的周期i实例的输入将连接到寄存器的初始状态函数(此函数不能是任何寄存器的函数);

(b)如果i>0,则到‘与’门的周期i实例的输入将连接到寄存器的下一状态函数的周期i-1实例。

换言之,寄存器被展开电路中的“连线”取代,展开电路在周期i中的“输出”与其在周期i-1中的“输入”具有相同的值。

作为实例,假设输入问题包括图3C中所示的电路。在图3C中,元件“Rx”(其中x是特定字母指示符)表示顺序元件,例如寄存器。每个“Ax”元件表示‘与’门。每个‘与’门具有2个输入,即输入变量和寄存器输出。

图3D示出了与图3C中所示电路对应的展开电路(此电路已展开三个周期)的实例。在图3C中,“Ixn”表示输入变量x的实例n。“Rx0”表示寄存器Rx的初始状态,例如常数0或常数1。“Rxn”(n>0)表示将寄存器Rx针对周期n-1的下一状态函数连接到寄存器Rx驱动的逻辑的周期n实例的“连线”。“Axn”表示‘与’门Ax的实例n。例如,可以使用图3B中所述的实例算法,从对应于图3C的网表来生成对应于图3D的网表。这是可以与示例性实施例的机制一起使用的展开分析的一个实例。可以使用公知的或以后开发的其他展开分析机制,而不偏离示例性实施例的精神和范围。

图4A示出了通过根据初始状态对图3A中所示的原始网表进行展开分析生成的展开的约束网表逻辑表达式。在图4A所示的实例中,C(0)表示约束C的展开时间0表示。“Init”指相应寄存器的初始值。图4A中所示的逻辑表达式指示在0到j的各个时间步长处影响约束C的值的逻辑元件的值。

图4A中所述的逻辑表达式提供了几种如何选择适当K值的方法。目标是指定在周期0处对输入I_1、I_2和I_3的评价,以便以后将不会违反约束。时间0时的输入I_1将影响时间步长1的约束C。时间0时的输入I_2将影响时间步长3的约束C。时间0时的输入I_3将影响时间步长4的约束C。更具体地说,时间j时的输入I_1将影响时间步长j+1的约束C;时间j时的输入I_2将影响时间j+3的约束C;并且时间j时的输入I_3将影响时间j+4的约束C。

为了使用图4A中的相应展开逻辑表达式来执行图3A中的网表的K时间步长模拟,模拟必须考虑时间步长0到K-1的约束满足输入。但是,因为输入采样与该输入影响输出之间的最长持续期限为4个时间步长,所以模拟自任何状态以来都最多需要5个时间步长,以确保输入评价将在未来满足约束。

由于图3A中所示的网表以及图4A中的相应展开逻辑表达式表示简单的前馈网表,所以增大K使其超过5并非有益,因为时间j时没有任何输入将影响超过时间j+5的约束。但是,如果网表中存在反馈回路,则可能时间j时的单个输入会影响多个时间步长处的约束。也可能输入会在未来不确定地影响约束。处理此类情况的唯一公知方法是使用可满足性算法针对要模拟的周期数求解约束,但是如上所述,在实际中这可能是成本过高的解决方案。当出现这些情况时,此处所述的示例性实施例的机制仍将使用相同的试探,但是如果试探不起作用(即无法确定适当的K值),则不采取任何操作来为此情况生成测试用例。但是,当与当前测试用例生成机制进行比较时,这并不比那些公知的方案更差。应当指出,实际中尚未遇到示例性实施例的试探未生成解决方案的情况。

此外应当指出,在上述实例中,所有寄存器的初始值均为常数。但是,可能并非始终是这种情况。如果在初始值锥面中存在输入,则K的计算还将考虑对初始值锥面中输入的评价的影响。

例如,网表中的寄存器具有两个与其关联的组件,即初始值门和下一状态函数门。寄存器在时间0时的输出值是初始值门在时间0时的值。通常,人们会将初始值(重置值)视为常数,即constant_0(布尔值“0”)或constant_1(布尔值“1”)。但是,初始值逻辑可以不是常数并且可以包含输入。如果初始值逻辑中存在输入,则此输入在周期0的值与寄存器相关。图4B中显示了如上说明的一个实例。

在图4B中,R_3是约束,R_3是具有下一状态函数A_1(‘与’门)和初始值函数constant_1(布尔值“1”)的寄存器。A_1具有输入I_1和寄存器R_2作为两个输入。寄存器R_2具有寄存器R_1作为下一状态函数和constant_1作为初始值。寄存器R_1具有constan_1作为下一状态函数和I_2作为初始值。当求解在周期“0”的输入时,K的值实际为3,因为I_2在周期“0”的值将影响约束C在周期2的值。如果没有考虑初始值锥面中的输入,则K的值将为2,在周期0的I_1将影响在周期1的约束C。

根据以上对各个时间步长处的约束影响的观察,已经开发了两种试探,并且可由示例性实施例用于确定适当的K值。首先应当指出,当为给定输入I_j指定值时,重要的是确保使用的K值要尽可能小,但仍足以允许将I_j的选定值传播到每个约束C。否则,针对此输入选择的值可能易于到达终端状态。

其次应当指出,某些输入的值可能会影响多个时间步长处的给定约束。例如,在图3A的网表中,如果I_1和I_3实际为相同的输入,则此相同输入将影响多个时间步长(即,未来的时间步长1和4)处的约束C。虽然第一试探将K选择为1(即最浅敏感度),但是在第二试探中,将考虑状态元件的最大数量,所述状态元件可在到达每个给定输入之前,沿着不引起循环的简单路径通过C的扇入进行传递。如果允许遍历循环的逻辑,则K的值将无限地增长。

通过针对每个网表执行深度优先或宽度优先图形遍历算法,可以满足这两种试探。例如,深度优先或宽度优先图形遍历算法可以包括针对网表的每个输入,根据最小深度试探或最大长度非循环路径试探来确定深度参数。通过网表的深度优先搜索,可以判定从输入到约束是否存在多个具有不同数量寄存器的非循环路径。如果从输入到约束存在多个具有不同数量寄存器的非循环路径,则可以使用最大长度非循环路径试探。否则,可以使用最小深度试探。

在时间0时的输入值影响约束之前,最小深度试探遍历展开网表的有向图,以便为每个输入确定最小深度。在到达输入之前,最大长度非循环路径试探为每个输入确定约束的最大扇入深度。

参见图3A所示的实例,第一试探将生成为4的深度值,因为如图4A所示,时间步长0处的I_3的输入值将影响时间步长4处的约束。第二试探也将生成为4的深度值。作为进一步的实例,考虑图4C中所示的实例电路。如图4C所示,从输入I_1到约束C存在多个循环路径。一个路径具有单个寄存器R_3,另一个具有三个寄存器R_1、R_2和R_3。最小深度试探将生成为2的K值。最大长度非循环试探将生成为4的K值。在图4C所示实例中,将选择最小深度试探以与示例性实施例一起使用,如先前讨论的那样。

将使用两种试探中的一种来确定网表的每个输入的深度值。然后,可以选择网表的所有输入的最大深度值作为网表的深度值。此深度值随后被用作K值,以确定约束求解的滑动窗口的宽度。图5是根据一个示例性实施例的可用于执行K值确定的代码的实例。

针对网表确定了约束求解的滑动窗口的K值之后,可以使用K值在终端约束下模拟网表。图6是可用于执行在终端约束下模拟网表的代码的实例。

如图6所示,模拟将创建信号随时间变化的评价的跟踪T。对于网表中的每个约束,模拟将通过针对每个约束执行K步长约束满足评估来评估网表中的寄存器的初始状态定义,以确保输入的选定值在未来不会违反终端约束。模拟将在跟踪T中记录其选定输入评价。如果违反了终端约束,则模拟无法继续,并且向用户报告所述违反且跟踪显示如何违反终端约束。本质上,模拟执行的初始评估是相对于初始状态展开网表。

然后,模拟通过针对每个约束C执行K步长约束满足评估,为模拟的每个时间步长计算要在每个时间步长施加到网表的一组合法输入,以确保输入的选定值在未来不会违反终端约束。通过从时间i时跟踪T中的状态开始将满足(SAT)算法应用于约束的K步长展开,来执行此约束满足评估。然后,在跟踪T中记录选定的输入评价。本质上,约束满足评估涉及相对于时间i时跟踪T中寄存器的0、1当前状态评价进行展开。

提供了这两种合法输入的评估(即,初始评估和针对每个时间步长的评估)是因为这样的事实:正确地向初始值锥面中的输入指定评价所需的K值不同于正确地向下一状态锥面中的输入指定评价所需的K值。

例如,再次考虑图4B所示的电路。在图4B所示的电路中,在周期0时正确地指定输入I_2所需的K值为3。但是,要针对周期0或更高周期正确指定输入I_1,K值为2。应当指出,在此情况中只需找到在周期0时向输入I_2进行的指定(I_2的值与周期>0时的约束C无关)。如果针对所有周期期间的计算将K的值设置为3,则执行了比所需更多的操作,因为所述算法只需为周期>0将K设置为2。

因此,示例性实施例提供了一种用于在模拟网表期间定义约束求解的滑动窗口的机制。通过确定包括模拟的多个未来时间步长的窗口宽度来定义此滑动窗口,将为所述模拟评估输入以确定它是否违反任何终端约束。如果将在未来违反终端约束,则可以修改输入评价以确保在模拟以生成跟踪期间将不会违反终端约束。然后,可以将此跟踪用作测试与网表关联的集成电路器件的操作的测试用例。

图7是根据一个示例性实施例的分析引擎的主要运行组件的示意性方块图。如图7中所示,分析引擎700包括控制器710、接口720、展开模块730、最小长度路径确定引擎740、非循环路径最大长度确定引擎750、模拟引擎760以及跟踪存储模块770。分析引擎700的元件710-770可以在硬件、软件或者硬件和软件的任意组合中实现。在一个示例性实施例中,元件710-770作为由一个或多个处理器执行的软件指令来实现。

控制器710控制分析引擎700的总体操作并协调其他元件720-770的操作。控制器710通过接口720(其可以是用户接口、网络接口和/或此类接口)接收电路模型(包括例如网表数据结构)。控制器710向模拟引擎760提供网表数据结构,模拟引擎760对网表数据结构执行操作以生成存储在跟踪存储模块770中的跟踪。

模拟引擎760可以调用展开模块730以展开网表中的网络,以便最小长度路径确定引擎740和/或非循环路径最大长度确定引擎750可以对展开的网络执行操作以确定网表的深度值。然后,使用此深度值作为滑动窗口宽度值K以确定未来的模拟中的时间步长数,将为所述模拟评估网表的元件状态以便判定输入值是否违反终端约束。模拟引擎可以初始地根据初始寄存器值,其后对于模拟的每个时间步长根据输入来执行此类分析。

然后,可以输出跟踪存储模块770中的结果跟踪,并将其用作建立输入的测试用例向量以便测试对应于网表的集成电路器件的操作的基础。因此,结果测试用例向量以后可以用于验证系统中,以验证集成电路器件的正确操作。

图8和9是示出一个示例性实施例的示意性操作的示意性流程图。将理解的是,流程图的每个方块以及流程图中的方块组合可以通过计算机程序指令实现。可以为处理器或其他可编程数据处理装置提供这些计算机程序指令以产生机器,以使在处理器或其他可编程数据处理装置上执行的指令创建用于实现一个或多个流程图方块中指定的功能的装置。这些计算机程序指令还可以存储在可引导处理器或其他可编程数据处理装置以特定方式运行的计算机可读存储器或存储介质中,以使存储在计算机可读存储器或存储介质中的指令产生制品,所述制品包括实现一个或多个流程图方块中指定的功能的指令装置。

相应地,流程图的方块支持用于执行指定功能的装置的组合、用于执行指定功能的步骤的组合,以及用于执行指定功能的程序指令装置。还将理解的是,流程图的每个方块以及流程图中的方决组合可以通过执行指定功能或步骤的基于硬件的专用计算机系统,或者通过专用硬件和计算机指令的组合来实现。

此外,提供流程图是为了说明在示例性实施例中执行的操作。流程图并非旨在声明或暗示对特定操作的限制,或者更具体地说,对操作顺序的限制。可以修改流程图的操作以适合特定实施方式而不偏离本发明的精神和范围。

图8是示出根据一个示例性实施例的在终端约束下模拟网表的示意性操作的流程图。如图8中所示,操作开始于分析引擎初始化网表的滑动窗口宽度值和跟踪(步骤810)。然后,分析引擎确定网表中的下一约束(步骤820)并确定约束求解的相应滑动窗口宽度K(步骤830)。根据网表中的寄存器的初始状态定义,分析引擎使用滑动窗口约束求解确定初始输入状态评价,以确保输入值在未来不会违反终端约束(步骤840)。分析引擎将选定输入评价记录为跟踪的一部分(步骤850)。然后,分析引擎判定这是否是网表中的最后一个约束(步骤860)。如果否,操作返回步骤820。

如果这是网表中的最后一个约束,则分析引擎启动网表的模拟(步骤870)。分析引擎确定下一时间步长(步骤880),并通过从时间i时跟踪T中的状态展开约束来针对每个约束C执行K步长约束满足分析,以确保选定的输入值将不会违反终端约束(步骤890)。分析引擎判定这是否为最后一个时间步长(步骤892),如果否,将返回步骤880。如果这是最后一个时间步长,则将产生的一组输入评价记录到跟踪中(步骤894),并且操作终止。

图9是示出根据一个示例性实施例的用于确定约束求解的滑动窗口宽度的示意性操作的流程图。图9中所示操作可以例如作为图8中步骤830的一部分执行。

如图9所示,操作开始于分析引擎将深度初始化为0(步骤910)。分析引擎确定网表中的下一输入(步骤920)。分析引擎判定是否针对此输入使用最小深度试探(步骤930)。如果是,则分析引擎确定从输入到约束的最小长度路径,并将最小长度设置为临时深度参数(步骤940)。如果没有使用最小深度试探,则分析引擎确定从输入到约束的最大长度路径,并将临时深度参数设置为等于已确定的最大长度(步骤950)。

然后,分析引擎判定临时深度参数是否大于网表的其他输入的先前临时深度参数(步骤960)。如果是,则分析引擎将网表的深度设置为等于临时深度参数(步骤970)。此后,或者如果临时深度参数不大于网表的其他输入的先前临时深度参数,则分析引擎将判定这是否为网表的最后一个输入(步骤980)。如果这不是网表的最后一个输入,则操作返回步骤920。否则,将返回网表的深度值(步骤990),并且操作终止。

因此,示例性实施例提供了一种滑动窗口方法,以确定到网表的输入是否将在网表模拟期间生成终端约束违反。将在模拟的每个时间步长处应用此滑动窗口。如果通过滑动窗口方法确定特定输入可能会导致终端约束违反,则可以选择替代输入,以便在用于测试对应于网表的集成电路器件的操作的测试用例中使用。

应当理解,示例性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个示例性实施例中,示例性实施例的机制以软件实现,所述软件包括但不限于固件、驻留软件、微代码等。

此外,示例性实施例可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于在此说明的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。

所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写(CR-R/W)和DVD。

适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线直接或间接连接到存储器元件的处理器。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。

输入/输出或I/O设备(包括但不限于键盘、显示器、指点设备等)可以直接或通过中间I/O控制器与系统相连。网络适配器也可以被连接到系统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以太网卡只是几种当前可用的网络适配器类型。

出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说,许多修改和变化都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号