规范化表示中的自适应状态-符号转换的制作方法

文档序号:6582841阅读:168来源:国知局
专利名称:规范化表示中的自适应状态-符号转换的制作方法
技术领域
本公开总体上涉及电子设计自动化。更具体地,本公开涉及用于自适应地执行规 范化表示(例如,二元决策图)中的状态-符号转换的方法和装置。
背景技术
设计工具和验证工具的提高使得计算设备的快速发展成为可能。事实上,如果没 有这种工具,几乎不可能设计和验证当今的计算设备中常见的复杂集成电路。受约束的随机仿真方法作为基于定向测试的仿真的替代,对于复杂设计的功能性 验证来说正变得普及。在受约束的随机仿真方法中,生成随机向量以满足设计的特定操作 约束。这些约束通常被指定为测试范本(test-bench)程序的一部分。测试范本自动生成 (TBA)工具使用测试范本程序来生成随机变量集合的随机解,使得随机变量集合上的约束 集合得到满足。接着使用这些随机解来生成用于待验证的设计(DUV)的有效的随机激励。 仿真工具使用这些随机激励来仿真DUV,并且通常在测试范本程序中对这些仿真的结果进 行检验以监测功能性覆盖,从而提供关于验证质量和完成度的置信度测量。约束求解器通常被用来生成满足约束集合的随机激励(例如,随机向量)。约束求 解器的基本功能在于对以下约束满足问题进行求解在给出变量集合和约束集合时,寻找 满足约束集合的变量集合的值集合。为了更好地软件维护和质量,约束求解器所生成的解 需要是可重现的和确定性的。进一步,由于用户通常需要对于随机仿真的良好覆盖,因此约 束解同样需要均勻分布。遗憾的是,约束满足问题是NP难问题(NP-Complete)。另一方面,逻辑仿真通常随 着设计的大小而线性地缩放。结果是,激励生成的速度通常非常滞后于在仿真中使用激励 的速度。因此,希望改进约束求解器的性能,因为其能够显著改进约束随机仿真工具的整体 性能。

发明内容
本发明的一些实施方式提供了在约束随机仿真期间自适应地执行规范化表示中 的状态-符号转换从而改进约束求解器性能的技术和系统。规范化表示可以用来生随机激 励,其满足针对状态变量集合和随机变量集合而定义的约束集合。术语“状态-符号转换” 通常指的是将一个或多个状态变量添加到规范化表示中和/或将一个或多个状态变量从 规范化表示中移除。注意到,规范化表示可以使用随机变量集合和状态变量的子集来构造。例如,在受 约束的随机仿真开始时,系统可以使用包括随机变量的规范化表示。随着仿真的进行,系统 可以决定将状态变量添加到规范化表示中和/或将状态变量从规范化表示中移除。具体地,系统可以监测与受约束的随机仿真相关联的参数。通常,系统可以监测与 确定一个或者多个状态变量是否应当被添加到规范化表示中和/或从规范化表示中移除 相关的参数。
部分或是全部基于所监测的参数,系统可以选择一个或者多个不是状态变量集合 的子集中的状态变量,将其添加到规范化表示中。进一步,系统可以选择当前在状态变量集 合的子集中的一个或者多个状态变量,将其从规范化表示中移除。系统接着可以构造包括 和/或排除所选择的一个或多个状态变量的规范化表示。接下来,系统可以使用新构造的 规范化表示来生成用于受约束的随机仿真的随机激励。以这种方式执行状态-符号转换可以帮助系统改进性能。特别地,将状态变量添 加到规范化表示中可以改进规范化表示的性能,但同时也增加了规范化表示的大小。另一 方面,从规范化表示中移除状态变量可以减小规范化表示的大小,但可能不利地影响性能。 本发明的一些实施方式使用监测数据来智能地决定哪些状态变量被添加到规范化表示中 和/或哪些状态变量从规范化表示中移除。


图1示出了根据本发明一个实施方式的集成电路的设计和制作工艺中的多个阶 段;图2A示出了根据本发明一个实施方式的约束;图2B示出了根据本发明一个实施方式的BDD ;图3示出了根据本发明一个实施方式、如何使用随机变量和/或状态变量来构造 BDD ;图4示出了根据本发明一个实施方式、系统如何维持BDD的缓存;图5示出了根据一个实施方式、系统如何在受约束的随机仿真期间从缓存中清除 BDD ;图6呈现了描述根据本发明一个实施方式的、用于在受约束的随机仿真期间自适 应地在规范表示中执行状态-符号转换的过程的流程图;图7示出了根据本发明一个实施方式的计算机系统;图8示出了根据本发明一个实施方式的装置。
具体实施例方式给出下文描述是为了使本领域的任何技术人员能够制造和使用本发明,并且下文 描述是在特定应用及其需求条件的上下文中提供的。对所公开的实施方式的多种修改对于 本领域技术人员将是显而易见的,并且可以将这里定义的普遍原则应用于其它实施方式和 应用,而不脱离本发明的精神和范围。因此,本发明不限于所示出的实施方式,而是将被给 予与这里所公开的原则和特征相一致的最宽的范围。集成电路(IC)设计流程图1示出了根据本发明一个实施方式的、集成电路的设计和制作工艺中的各个阶 段。该过程通常开始于产品构思(步骤100),产品构思可以通过使用EDA过程(步骤 110)来设计的集成电路来实现。在对集成电路进行流片(事件140)之后,进行制作过程 (步骤150)以及封装和组装过程(步骤160),从而产生芯片170。EDA过程(步骤110)包括如下文所述的步骤112-130,其仅用于说明用途而非意在限制本发明。具体地,可能以与以下所描述的顺序不同的顺序来执行所述步骤。在系统系统设计(步骤112)期间,电路设计者描述其想要实现的功能。他们也 可以执行假设规划来细化功能、检查成本等。在这个阶段可以进行硬件_软件架构划分。 可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Model Architect、 Saber 、System Studio 禾口 Design Ware 。在逻辑设计与功能验证(步骤114)期间,编写用于系统内模块的VHDL或Verilog 代码,并且针对功能准确性进行检查,例如,对没计进行检查以确保产生正确的输出。可 以用于这一个步骤的来自Synopsys公司的示例性EDA软件产品包括VCS 、Vera 、 Design Ware 、MagellanTM、Formality 、esp 禾口Leda 。在测试的综合与设计(步骤116)期间,VHDL/Verilog被转译为网表。进一步, 可以针对目标技术优化该网表,并且可以设计并且执行测试以用来检查成品芯片。可以 用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Design Compiler 、 PhysicalCompiler 、Test Compiler、Power Compiler 、FPGA Compi 1 er>TetraMAX 和 Design Ware c在网表验证(步骤118)期间,检查网表与定时约束的兼容性以及与VHDL/Verilog 源代码的对应性。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括
Formality 、Prime Time 和 VCS 。在设计规划(步骤120)期间,针对定时和顶层布线来构造和分析芯片的总体版 图。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Astro 和IC Compiler 产品。在物理实现(步骤122)期间,将电路元件定位在版图中(放置)并且将其电气地 耦合(布线)。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Astro 和 IC Compiler 产品。在分析和提取(步骤124)期间,在晶体管级验证电路功能并且提取寄生。可以 用于这个步骤的来自Synopsys公司的示例性EDA软件产品包括AstroRail 、PrimeRail, Prime Time 禾口 Star-RCXT 。在物理验证(步骤126)期间,为确保制造、电气问题、光刻问题和电路的正确性而 对设计进行检查。Hercules 是可以用于这一步骤的来自Synopsys公司的示例性EDA软 件产品。在解析度增强(步骤128)期间,对版图执行几何操作以提高设计的可制造能力。 可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Proteus/Progen、 ProteusAF 和 PSMGen。在掩模数据准备(步骤130)期间,对设计进行流片以产生将在制作期间使用的掩 模。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括CATS 系列产
品O一些实施方式可以用于上述的一个或者多个步骤期间。具体地,一些实施方式可 以用在逻辑设计和功能验证(步骤114)期间。
警约束的随机仿真正确地定义假设给定的DUV将工作于其中的环境是有效设计验证的重要先决条 件。传统上,验证工程人员使用测试范本来对DUV的环境进行建模。可以使用硬件描述语 言对测试范本进行描述。注意,测试范本通常包括以适当的方式对环境进行约束的测试集 合,从而覆盖DUV的目标性态集合。一些硬件语言,例如System Verilog,支持几种先进的构架用以明确地指定测试 范本中的约束。具体地,明确的约束可以被用来以与测试范本和DUV之间的协议相符合的 方式来限制测试范本的随机选择。这种测试范本通常被称为受约束的随机测试范本。如上所述,随机激励生成的性能通常大大滞后于逻辑仿真的性能。因此,改进约束 求解器的性能对于测试范本的整体性能具有相当大的影响。因此,希望改进约束求解器的 性能。BDD (二元决策图)在典型的受约束的随机仿真情境下,用户编写约束集合(例如,使用System Verilog),并且在仿真期间,约束求解器试图寻找到满足用户指定的约束的随机激励(随 机变量赋值集合)。约束求解器可以使用BDD、ATPG、可满足性或是其他类似方法来寻找满 意的解(随机激励)。具体地,在基于BDD的约束求解器中,系统通常使用BDD来表示约束。(用于仿真 的)随机变量被作为BDD变量对待,而(对于这些变量的)约束的结合被构造为由BDD表示 的布尔(Boolean)函数。当且仅当使用所赋的值对布尔函数进行推算能够得出“TRUE(真)” 值时,对这些变量的赋值即为满足约束。图2A示出了根据本发明一个实施方式的约束。图2A所示的约束为三个变量“a”、“b”、“c”的布尔函数。这些变量通常用以对DUV 进行建模,例如,变量“a”可以是表示DUV的输入信号的逻辑状态的随机变量。同样地,变 量“b”可以是表示DUV的逻辑门的输出的状态变量。注意到,在随机变量的所有可能赋值 中,只有某些赋值对应于DUV的有效状态。由于受约束的随机仿真的意图在于在所有的有 效状态上验证DUV,因此需要一种限制随机变量的值的技术。通常使用的一种技术是使用约 束集合来限制随机变量的值。在基于约束的仿真期间,测试范本可以生成满足约束集合的 随机输入(例如,对于随机变量“a”、“b”、“c”的赋值)。一种生成随机输入的方法是采用规范化表示,例如BDD。具体地,系统可以首先生 成表示约束集合的BDD。接着,系统可以使用BDD来生成随机输入。具体地,BDD中从根节 点到端节点的对应于值“ 1,,的每一条路径可以与满足约束集合的赋值相关联。图2B所示为根据本发明一个实施方式的BDD。BDD 200可以表示图2A所示的约束。BDD 200包括节点202、204、206、208、210、 212、214以及216。节点202可以是可用以表示整体约束的根节点。节点204可以与变量 “a”相关联,节点206和节点208可以与变量“b”相关联,节点210和节点212可以与变量 “C”相关联。节点214可以表示布尔函数的布尔值“TRUE”或者“1”。换句话说,节点214可 以表示约束得以满足的情况。相反,节点216可以表示布尔值“FALSE(假)”或者“0”。换 句话说,节点216可以表示约束没有得到满足的情况。BDD 200中的有向边可以表示对变量的赋值。例如,节点204和节点206之间的有向边可以与向随机变量“a”赋予值“0”相关联。同样地,节点208和节点212之间的有向 边可以与向变量“b ”赋予值“ 1”相关联。BDD中从根节点(例如节点202)到布尔值“TRUE”的端节点(例如节点214)的 有向路径对应于满足约束集合的变量赋值,所述约束集合用BDD来表示,例如图2A所示的 约束。例如,路径218开始于节点202并且终止于节点214。与路径218相关联的赋值为 a = 0,b = 1并且c = 1。很明显,该赋值使得图2A所示的布尔函数被评估为“TRUE”。一旦系统建立了 BDD,其就可以通过如下方式来生成受约束的随机激励确定所 有从根节点到端节点的、与“TRUE”值相关联的独立路径,以及从所有独立路径的集合中随 机地选择路径。注意,BDD仅仅是很多种用以生成随机激励的规范化表示中的一种。逻辑函数的 规范化表示(例如,约束)通常可以是任何满足以下性质的表示如果两个逻辑函数相同, 只要在构造规范化表示时使用了相同的变量次序(或相同的特征),它们的规范化表示就 相同。规范化表示的示例包括但不限于二元决策图、二元矩代图、零抑制二元决策图、多值 决策图、多终端二元决策图以及代数决策图。可以使用状态变量和随机变量来定义约束集合。状态变量是用以表示DUV内部状 态的变量。例如,表示逻辑门的输出值的变量可以是状态变量。随机变量是用以表示向DUV 的随机输入的变量。例如,表示地址总线的一个或多个位的值的变量可以是随机变量(注 意状态变量或随机变量可以具有一个或多个位)。在一些技术中,仅仅使用随机变量来构建规范化表示。随着仿真的进行,状态变量 被赋予不同的值。在仿真中任何给定的时刻,这种方法基于状态变量的特定值来使用随机 变量构建规范化表示。这种方法的不足之处在于其减慢了随机激励生成过程,因为系统必 须基于状态变量的值来保持构建新的规范化表示。在其他的技术中,使用所有的随机变量和状态变量来构建规范化表示。遗憾的是, 这种方法并不现实,因为所产生的规范化表示(例如,BDD)通常大到不切实际。与这些传统技术不同的是,本发明的一些实施方式动态地确定哪个状态变量将被 添加到规范化表示中。将状态变量动态地添加到规范化表示中使得本发明的实施方式能够 改进随机激励生成的性能而不需要不切实际的资源量。图3示出了根据本发明的一个实施方式、如何使用随机变量和/或状态变量来构 JtBDD0在情境302中,对于两位变量“a”和“b”来限定约束。变量“a”是随机变量,如所 保留字“rand”所指示的,而变量“b”不是随机变量。在情境302中,变量“b”被用来说明 状态变量的值如何影响针对约束而构建的规范化表示。以下在对图3的讨论中,提及变量 “b”时将其作为状态变量。注意,在情境302中,变量“b”被赋值为“1”。当状态变量“b” 等于1时,BDD 306表示约束“a > b”。图3中的虚线表示被赋值“0”的位。例如,在BDD 306中,节点“ a [ 1 ],,和节点“ 0 ”之间的虚线表示位“ a [ 1 ] ”被赋值“ 0 ”。情境304描述了当状态变量“b”被赋值为“2”时的情况,并且BDD308代表当状态 变量“b”等于“2”时的约束“a >b”。注意,BDD 306不同于BDD 308。当使用随机变量(例 如,随机变量a)来构造用于约束的BDD时,BDD的结构取决于约束中状态变量的值。因此, 如果系统仅使用约束中的随机变量构造用于约束的BDD时,由于约束中的状态变量的值在仿真期间内发生改变,系统可能需要保持不停地构造新的BDD。可以产生同时包括约束中的随机变量和状态变量的BDD。例如,BDD 310是使用随 机变量“a”和状态变量“b” 二者来构造的。注意到,BDD 310比BDD 306或是BDD 308都 具有更多的节点。对于具有大量的随机变量和状态变量的约束来说,构造包括所有随机变 量和状态变量的BDD可能在计算上不可实现。本发明的一些实施方式维护针对向状态变量的各种赋值而构造的BDD的缓存。该 系统使用了缓存来充分地加速随机激励的生成。图4说明了根据本发明的一个实施方式的、系统如何维护BDD的缓存。缓存402可以存储多个BDD。可以通过缓存表404中的条目来参考BDD。注意,缓 存表404中的每个条目由向状态变量集合的赋值组成。在操作期间,系统可以使用这些状 态变量的值来查询缓存表404,以确定缓存402是否包含对应于向状态变量的赋值的BDD。 如果缓存表404指示BDD存在于缓存402中(即,当缓存命中时),系统可以使用该BDD,由 此节约构造BDD所需的计算资源。当缓存402没有BDD时(即,当缓存未命中时),系统可 以构造BDD,并且可选择地将其存储在缓存402中,并且可选择地将合适的缓存条目添加到 缓存表404中。例如,如图4所示,缓存表404包括对应于三个独立的对状态变量“ S1 ”、“ S2 ”和“ S3” 的赋值的缓存条目406、408以及410。缓存条目406、408以及410分别指向BDD 412,414 以及416。随着仿真进行,状态变量“Sl”、“S2”和“s3”的值可以发生变化,并且系统可以基 于状态变量“s/’、“s2”和“s3”的值从缓存402中选择合适的BDD。注意,当对应的约束具有一个或多个共同子表达式时,存储在缓存402中的BDD可 以共享部分BDD。例如,对应于BDD 414和416的约束可以具有一个或者多个共同的子表达 式,因此,在BDD 414和416之间可以共享部分BDD。系统可以监测多个标准从而促进确定将哪些状态变量包括进BDD中。例如,系统 可以监测与状态变量“Sl”、“S2”和“s3”相关联的各种参数。具体地,系统可以监测状态变 量改变其值的次数、状态变量的值等于0的仿真循环的次数、以及状态变量的值等于1的仿 真循环的次数。如果系统维护有BDD的缓存,则系统同样可以监测缓存中缓存条目的数目、 缓存的命中率以及缓存的未命中率。如果系统确定并不希望使用缓存中的特定BDD来生成随机激励,系统可以从缓存 中移除该BDD并且从缓存表中移除相关联的缓存条目。例如,假设系统当前通过使用随机 变量和状态变量集合S1来构造BDD。更进一步,假设系统决定对于一个或者多个状态变量 执行状态-符号转换。例如,系统可以将一个或多个状态变量添加到S1以获得S2,并接着使 用S2来构造BDD。使用S1和S2构造的BDD可能具有共同的子表达式,因此,当系统使用S2 构建BDD时,其可以再次使用BDD中与该共同子表达式相对应的部分。接下来,假设系统决 定将更多的状态变量添加到S2以获得S3。同样,在S2和S3的BDD之间可能存在系统在构 建用于S3的BDD时可以复用的共同子表达式。一旦系统构建对于S3的BDD,系统可以决定 移除使用S1构建的、但是在对于S2和S3构造BDD时没有复用的BDD或是BDD的部分。具体 地,无论系统何时将状态变量添加到BDD,系统都可以保持对复用的子表达式(以及BDD相 对应的部分)和那些仅仅在旧BDD中使用的子表达式的跟踪。接着,系统可以清除那些在 使用状态变量新集合构造新的BDD时没有复用的BDD和部分BDD。注意,如果系统过快地清除BDD或是部分BDD,由于所清除的BDD或是部分BDD可能与下一个BDD具有共同的结构, 因此就有可能降低性能。图5示出了根据本发明的一个实施方式、系统如何在受约束的随机仿真期间从缓 存中清除BDD。系统可以使用随机变量和状态变量的子集来构造BDD 508。系统可以将BDD 508 存储在缓存502中,并且维护缓存表504,缓存表504中可能包括指向BDD 508的条目506。 接着,系统可以决定对一个或多个状态变量执行状态_符号转换。当系统对一个或多个状 态变量执行状态_符号转换时,其通常清空缓存表中的所有条目,并随着受约束的随机仿 真的进行以及基于状态变量和随机变量的新集合构造BDD,而将条目添加到空缓存表中。注意,当系统清空缓存表时,可能没有删除缓存中的BDD。具体地,系统可以使用 BDD管理器来管理缓存中的BDD。为了从缓存中删除BDD,系统可能需要专门请求BDD管理器 删除该BDD。当系统在状态-符号转换之后构造BDD时,系统可能需要复用在执行状态_符 号转换之前使用的BDD或是BDD的部分。例如,在执行状态_符号转换之后,系统可以清空缓存表504。接着,随着系统基 于状态变量和随机变量的新集合构造BDD,系统可以开始将缓存条目添加到缓存表510中。 例如,系统可以构造BDD 514并且将BDD 514的缓存条目512添加到缓存表510中。系统 可以执行另一个状态_符号转换,并且清空缓存表510。随着系统基于状态变量和随机变量 的新集合构造BDD,系统可以接着开始将缓存条目添加到缓存表516中。例如,系统可以构 造BDD 520并且将指向BDD 520的缓存条目518添加到缓存表516中。(缓存表504、510 以及516未必是不同的实体,为了清楚起见,在图5中将其示为不同的实体)。当系统将条目添加到缓存表510中时,系统可以复用当系统使用状态变量和随机 变量的之前集合来生成随机激励时所使用的BDD的部分。例如,当系统构造BDD 520时,其 可以复用与BDD 514共享的部分BDD。在构建BDD 520之前,系统可以决定删除在填充缓存表510时未被使用的BDD。例 如,假设在将缓存表510用于受约束的随机仿真时,从未使用过BDD 508。在开始填充缓存 表516之前,系统可以决定从缓存中删除BDD 508。由于所删除的BDD可能具有将来会复用的结构,因此删除BDD可以释放空间,但是 可能还会导致性能降级。通常,系统可以使用多个标准来确定是否希望在将来使用BDD或 是BDD的部分。如果系统确定希望在将来使用该BDD或是BDD的该部分,则系统可以将该 BDD保持在缓存中。如果系统确定在将来不希望使用该BDD或是BDD的部分,则系统可以决 定请求BDD管理器删除该BDD从而将其从缓存中删除。注意,可以使用各种规范化表示来生成随机激励。本发明的实施方式并不限于 BDD0具体地,本发明的实施方式可以被用来执行规范化表示中的自适应的状态-符号转 换。以下段落描述了用于在受约束的随机仿真期间执行规范化表示中的自适应的状态-符 号转换的技术和系统。用于自适应地执,行状杰-符号转换的过稈图6给出了描述根据本发明一个实施方式的、用于在受约束的随机仿真期间自适 应地执行规范化表示中的状态-符号转换的过程的流程图。如上所述,系统可以使用规范 化表示来生成随机激励,其满足针对状态变量集合和随机变量集合而定义的约束。
该过程可以开始于使用随机变量集合和状态变量集合的子集来构造规范化表示 (框602)。接着,系统可以使用该规范化表示来生成用于受约束的随机仿真的随机激励(框 604)。具体地,当受约束的随机仿真开始时,系统可以仅仅使用随机变量来构造规范化 表示。随着仿真的进行,系统可以将更多的状态变量添加到规范化表示中。因此,在仿真的 任何给定点处,规范化表示可以包括随机变量集合和状态变量集合的子集。系统可以维护规范化表示的缓存,其用以在受约束的随机仿真期间生成随机激 励。缓存中的缓存条目可以指向规范化表示,并且缓存条目的标签至少可以基于状态变量 集合的子集的值。注意,在受约束的随机仿真期间,状态变量的值被更新从而反映DUV的行为。由于 约束集合可以同时包括随机变量和状态变量,因此一个或多个状态变量的值的变化可以改 变如何为随机变量选择有效值。换句话说,无论何时只要状态变量的值发生改变,系统就可 能需要构造新的规范化表示。本发明的一些实施方式维护在受约束的随机仿真期间构造的 规范化表示的缓存。无论何时只要一个或多个状态变量的值发生改变,系统就可以确定其 是否在缓存中具有规范化表示,或其是否需要构造新的规范化表示以用于状态变量特定赋 值。系统继而可以监测与受约束的随机仿真相关联的参数,从而获得监测数据(框 606)。一般情况下,系统可以监测与确定一个或多个状态变量是否应该被添加到规范化 表示或从规范化表示中移除有关的参数。在决策过程中,对于不同的参数给予不同的重要 等级。具体地,系统可以监测状态变量(或同时采用的状态变量集合)改变其值的次数、 状态变量的值等于0的次数和/或状态变量的值等于1的次数。进一步,系统还可以监测 缓存大小(例如,缓存中条目的数目)、缓存命中率和/或缓存未命中率。此外,系统还可以 监测规范化表示的大小(例如,BDD中节点数或是BDD所使用的内存量)、规范化表示就状 态变量的数目而言的生长速率(例如,每状态变量的BDD大小的改变)。注意,例如规范化 表示的大小的一些参数可以由规范化表示管理器(例如,BDD管理器)来进行监测。此外,系统可以确定两个或更多个状态变量之间的相关,并且使用该相关来决定 哪些状态变量将被添加到规范化表示中或是从规范化表示中被移除。例如,如果系统确定 在两个状态变量之间存在强正相关或是强负相关,则系统可以确保不会将这两个状态变量 都添加到规范化表示中。原因在于,当在两个状态变量之间存在强正相关或是强负相关时, 将这两个状态变量都添加到规范化表示中很可能增加规范化表示的大小而不会带来任何 附加的性能效益。例如,如果系统确定在特定的测量窗口期间,缓存未命中率超过了用户定义的阈 值,则系统可以决定动态地将一个或多个状态变量添加到规范化表示中,从而试图降低缓 存未命中率。在另一个情境下,如果系统确定规范化表示的数目大于计数阈值,并且规范化 表示所使用的总存储空间小于存储阈值,则系统可以决定动态地将一个或多个状态变量添 加到规范化表示中,从而减少需要被管理的规范化表示的数目。在又一个情境下,如果系统 确定规范化表示所使用的总存储空间超过了存储阈值,并且所管理的规范化表示的数目小于计数阈值,则系统可以决定动态地从规范化表示中移除一个或多个状态变量。注意,系统可能无法监测所有的状态变量,因为从资源使用的角度来看这样做的 代价太大。因此,系统可以智能地确定监测哪些状态变量。例如,在仿真期间,如果系统确 定电路中的特定模块已经打开(例如,由于状态值的改变),则系统可以开始监测与该模块 相关联的变量。同样地,如果系统确定特定模块已经关闭,则系统可以停止监测与该模块相 关联的变量以节约资源。接着,系统可以使用监测数据来确定与状态变量集合的当前子集不同的状态变量 集合的新子集(框608)。注意,状态变量集合的当前子集是用以生成当前规范化表示的子 集。具体地,系统可以通过将一个或多个状态变量添加到当前子集和/或从当前子集移除 一个或者多个状态变量来确定状态变量集合的新子集。根据监测数据来决定哪一个(些) 状态变量被添加或是被移除。系统接着可以使用随机变量集合和状态变量集合的新子集来构造新的规范化表 示(框610)。系统可以选择性地移除预期不会在新规范化表示中使用的缓存条目。接着,系统可以使用新的规范化表示来生成用于受约束的随机仿真的随机激励 (框612)。该新的规范化表示预期能够改进激励生成过程的性能。计算机系统和装置图7示出了根据本发明一个实施方式的计算机系统。计算机系统702包括处理器704、存储器706和存储设备708。计算机系统702可 以与显示器714、键盘710和指点设备712耦合。存储设备708可以存储指令和/或数据, 所述指令和/或数据当被处理器704处理时使得计算机系统702使用规范化表示来生成用 于受约束的随机仿真的随机激励。具体地,存储设备708可以存储规范化表示716、生成模块718、监测模块720以及 转换模块722。在操作期间,计算机系统702可以将指令和/或数据从存储设备708载入存 储器706,并且使用处理器704对所述指令和/或数据进行处理。生成模块718可以包括用 以使用规范化表示716生成随机激励的指令。监测模块720可以包括用以监测与受约束的 随机仿真相关联的参数的指令。转换模块722可以包括用以至少基于所监测的参数执行状 态-符号转换的指令。图8示出了根据本发明的一个实施方式的装置。装置802可以包括多个机制(例如,集成电路),其可以通过有线或是无线的通信 信道彼此进行通信。具体地,装置802可以包括生成机制804、监测机制806、缓存机制810 以及转换机制808。在某些实施方式中,生成机制804可以配置用于使用规范化表示来生成 用于受约束的随机仿真的随机激励;监测机制806可以配置用于监测与受约束的随机仿真 相关联的参数;缓存机制810可以配置用于缓存规范化表示;以及转换机制808可以配置 用于执行状态-符号转换。装置802可以是计算机系统的一部分或是能够与其他计算机系统和/或设备进行 通信的分离的设备。装置802可以使用一个或多个集成电路来实现。具体地,装置802中 的一个或多个机制可以实施为处理器的部分。结论在该详细说明中描述的数据结构和代码通常存储在计算机可读存储介质上,该计算机可读存储介质可以是可存储由计算机系统使用的代码和/或数据的任意设备或介质。 计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁的和光的存储设备, 例如盘驱动器、磁带、CD (压缩盘)、DVD (数字多功能盘或数字视频盘)、或能够存储现在已 知或以后开发的计算机可读介质的其他介质。在详细说明部分中所描述的方法和过程可以实施为代码和/或数据,其可以存储 在如上所述的计算机可读存储介质中。当计算机系统读取和执行存储在计算机可读存储介 质上的代码和/或数据时,计算机系统执行实施为数据结构和代码并且存储在计算机可读 存储介质中的方法和过程。进一步,在本公开内容中所述的方法和过程可以包括在硬件模块中或是由硬件模 块来执行。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵 列(FPGA)、专用或共享的处理器和其他现在已知或以后开发的可编程逻辑器件。当硬件模 块被激活时,硬件模块执行在本公开中所描述的方法和过程。仅为了说明和描述的目的提供了对本发明的实施方式的上述描述。其不旨在于穷 举或将本发明限于这里公开的形式。因此,对于本领域中的从业者来说,许多修改和变形将 是易见的。另外,上述的公开内容并非旨在限制本发明。本发明的范围由所附权利要求书 来限定。
权利要求
一种用于在受约束的随机仿真期间自适应地执行规范化表示中的状态-符号转换的方法,其中所述规范化表示用以生成满足约束集合的随机激励,所述约束是针对状态变量集合和随机变量集合而定义的,所述方法包括使用第一规范化表示来生成用于所述受约束的随机仿真的随机激励,其中所述第一规范化表示使用所述随机变量集合和所述状态变量集合的第一子集来构造;监测与所述受约束的随机仿真相关联的参数,以获得监测数据;至少基于所述监测数据来确定与所述状态变量集合的所述第一子集不同的、所述状态变量集合的第二子集;使用所述随机变量集合和所述状态变量集合的所述第二子集来构造第二规范化表示;以及使用所述第二规范化表示来生成用于所述受约束的随机仿真的随机激励。
2.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测状态变量改变其值的次数。
3.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测状态变量的值等于0的仿真循环的次数。
4.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测状态变量的值等于1的仿真循环的次数。
5.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测规范化表示的大小。
6.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测有多少规范化表示正在由规范化表示管理器管理。
7.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测与所述受约束的随机仿真相关联的两个或更多参数之间的相关。
8.根据权利要求1所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测规范化表示的生长速率。
9.根据权利要求1所述的方法,进一步包括维护用以在所述受约束的随机仿真期间生成随机激励的规范化表示的缓存。
10.根据权利要求9所述的方法,其中所述缓存中的缓存条目指向规范化表示,并且其 中所述缓存条目的标签至少部分地基于一个或多个状态变量的值。
11.根据权利要求9所述的方法,进一步包括移除预计不会在所述第二规范化表示中使用的缓存条目。
12.根据权利要求9所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测所述缓存中缓存条目的数目。
13.根据权利要求9所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测所述缓存的命中率。
14.根据权利要求9所述的方法,其中监测与所述受约束的随机仿真相关联的参数包括监测所述缓存的未命中率。
15.一种用于在受约束的随机仿真期间自适应地执行规范化表示中的状态_符号转换 的设备,其中所述规范化表示用以生成满足约束集合的随机激励,所述约束是针对状态变 量集合和随机变量集合而定义的,所述设备包括第一生成装置,用于使用第一规范化表示来生成用于所述受约束的随机仿真的随机激 励,其中所述第一规范化表示使用所述随机变量集合和所述状态变量集合的第一子集来构 造;监测装置,用于监测与所述受约束的随机仿真相关联的参数,以获得监测数据; 确定装置,用于至少基于所述监测数据来确定与所述状态变量集合的所述第一子集不 同的、所述状态变量集合的第二子集;构造装置,用于使用所述随机变量集合和所述状态变量集合的所述第二子集来构造第 二规范化表示;以及第二生成装置,用于使用所述第二规范化表示来生成用于所述受约束的随机仿真的随 机激励。
16.根据权利要求15所述的设备,其中所述监测装置包括 用于监测状态变量改变其值的次数的装置。
17.根据权利要求15所述的设备,其中所述监测装置包括 用于监测规范化表示的大小的装置。
18.根据权利要求15所述的设备,其中所述监测装置包括用于监测与所述受约束的随机仿真相关联的两个或更多参数之间的相关的装置。
19.根据权利要求15所述的设备,进一步包括缓存维护装置,用于维护用以在所述受约束的随机仿真期间生成随机激励的规范化表 示的缓存。
20.一种用于在受约束的随机仿真期间自适应地执行规范化表示中的状态_符号转换 的装置,其中所述规范化表示用以生成满足约束集合的随机激励,所述约束是针对状态变 量集合和随机变量集合而定义的,所述装置包括第一生成机制,其配置用于使用第一规范化表示来生成用于所述受约束的随机仿真的 随机激励,其中所述第一规范化表示使用所述随机变量集合和所述状态变量集合的第一子 集来构造;监测机制,其配置用于监测与所述受约束的随机仿真相关联的参数,以获得监测数据;转换机制,其配置用于至少基于所述监测数据来确定与所述状态变量集合的所述第一子集不同的、所述状态 变量集合的第二子集;以及使用所述随机变量集合和所述状态变量集合的所述第二子集来构造第二规范化表示;以及第二生成机制,其配置用于使用所述第二规范化表示来生成用于所述受约束的随机仿 真的随机激励。
全文摘要
本发明涉及规范化表示中自适应的状态-符号转换。具体地,一些实施方式提供一种用于自适应地执行规范化表示中的状态-符号转换的系统,所述规范化表示用以生成用于受约束的随机仿真的随机激励。所述系统可以使用约束中的随机变量集合和状态变量的子集来构造用于约束集合的规范化表示。接着,系统可以使用规范化表示来生成用于受约束的随机仿真的随机激励,并且监测与受约束的随机仿真相关联的参数。接着,系统可以至少基于所监测的参数将状态变量添加到规范化表示中或是从规范化表示中移除状态变量。该系统继而可以使用具有不同状态变量集合的、修改后的规范化表示来生成用于受约束的随机仿真的随机激励。
文档编号G06F17/50GK101872369SQ20091020763
公开日2010年10月27日 申请日期2009年10月28日 优先权日2009年4月27日
发明者D·戈斯瓦米, J·辛格, K·强, N·N·W·亨格 申请人:新思科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1