CN101872369B - 规范化表示中的自适应状态-符号转换 - Google Patents
规范化表示中的自适应状态-符号转换 Download PDFInfo
- Publication number
- CN101872369B CN101872369B CN200910207633.9A CN200910207633A CN101872369B CN 101872369 B CN101872369 B CN 101872369B CN 200910207633 A CN200910207633 A CN 200910207633A CN 101872369 B CN101872369 B CN 101872369B
- Authority
- CN
- China
- Prior art keywords
- monitoring
- canonical representation
- state variable
- random simulation
- constrained random
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Testing And Monitoring For Control Systems (AREA)
Abstract
本发明涉及规范化表示中自适应的状态-符号转换。具体地,一些实施方式提供一种用于自适应地执行规范化表示中的状态-符号转换的系统,所述规范化表示用以生成用于受约束的随机仿真的随机激励。所述系统可以使用约束中的随机变量集合和状态变量的子集来构造用于约束集合的规范化表示。接着,系统可以使用规范化表示来生成用于受约束的随机仿真的随机激励,并且监测与受约束的随机仿真相关联的参数。接着,系统可以至少基于所监测的参数将状态变量添加到规范化表示中或是从规范化表示中移除状态变量。该系统继而可以使用具有不同状态变量集合的、修改后的规范化表示来生成用于受约束的随机仿真的随机激励。
Description
技术领域
本公开总体上涉及电子设计自动化。更具体地,本公开涉及用于自适应地执行规范化表示(例如,二元决策图)中的状态-符号转换的方法和装置。
背景技术
设计工具和验证工具的提高使得计算设备的快速发展成为可能。事实上,如果没有这种工具,几乎不可能设计和验证当今的计算设备中常见的复杂集成电路。
受约束的随机仿真方法作为基于定向测试的仿真的替代,对于复杂设计的功能性验证来说正变得普及。在受约束的随机仿真方法中,生成随机向量以满足设计的特定操作约束。这些约束通常被指定为测试范本(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、System Studio和Design
在逻辑设计与功能验证(步骤114)期间,编写用于系统内模块的VHDL或Verilog代码,并且针对功能准确性进行检查,例如,对设计进行检查以确保产生正确的输出。可以用于这一个步骤的来自Synopsys公司的示例性EDA软件产品包括 MagellanTM、ESP和
在测试的综合与设计(步骤116)期间,VHDL/Verilog被转译为网表。进一步,可以针对目标技术优化该网表,并且可以设计并且执行测试以用来检查成品芯片。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括DesignPhysicalTest Compiler、Power CompilerTM、FPGA Compiler、和
在网表验证(步骤118)期间,检查网表与定时约束的兼容性以及与VHDL/Verilog源代码的对应性。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括和
在设计规划(步骤120)期间,针对定时和顶层布线来构造和分析芯片的总体版图。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括AstroTM和IC Compiler产品。
在物理实现(步骤122)期间,将电路元件定位在版图中(放置)并且将其电气地耦合(布线)。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括AstroTM和IC Compiler产品。
在分析和提取(步骤124)期间,在晶体管级验证电路功能并且提取寄生。可以用于这个步骤的来自Synopsys公司的示例性EDA软件产品包括AstroRailTM、PrimeRail、和Star-RCXTTM。
在物理验证(步骤126)期间,为确保制造、电气问题、光刻问题和电路的正确性而对设计进行检查。HerculesTM是可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品。
在解析度增强(步骤128)期间,对版图执行几何操作以提高设计的可制造能力。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括Proteus/Progen、ProteusAF和PSMGen。
在掩模数据准备(步骤130)期间,对设计进行流片以产生将在制作期间使用的掩模。可以用于这一步骤的来自Synopsys公司的示例性EDA软件产品包括系列产品。
一些实施方式可以用于上述的一个或者多个步骤期间。具体地,一些实施方式可以用在逻辑设计和功能验证(步骤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示出了根据本发明的一个实施方式、如何使用随机变量和/或状态变量来构造BDD。
在情境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。随着仿真进行,状态变量“s1”、“s2”和“s3”的值可以发生变化,并且系统可以基于状态变量“s1”、“s2”和“s3”的值从缓存402中选择合适的BDD。
注意,当对应的约束具有一个或多个共同子表达式时,存储在缓存402中的BDD可以共享部分BDD。例如,对应于BDD 414和416的约束可以具有一个或者多个共同的子表达式,因此,在BDD 414和416之间可以共享部分BDD。
系统可以监测多个标准从而促进确定将哪些状态变量包括进BDD中。例如,系统可以监测与状态变量“s1”、“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从而将其从缓存中删除。
注意,可以使用各种规范化表示来生成随机激励。本发明的实施方式并不限于BDD。具体地,本发明的实施方式可以被用来执行规范化表示中的自适应的状态-符号转换。以下段落描述了用于在受约束的随机仿真期间执行规范化表示中的自适应的状态-符号转换的技术和系统。
用于自适应地执行状态-符号转换的过程
图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)、专用或共享的处理器和其他现在已知或以后开发的可编程逻辑器件。当硬件模块被激活时,硬件模块执行在本公开中所描述的方法和过程。
仅为了说明和描述的目的提供了对本发明的实施方式的上述描述。其不旨在于穷举或将本发明限于这里公开的形式。因此,对于本领域中的从业者来说,许多修改和变形将是易见的。另外,上述的公开内容并非旨在限制本发明。本发明的范围由所附权利要求书来限定。
Claims (20)
1.一种用于在受约束的随机仿真期间自适应地执行状态-符号转换的方法,所述方法包括:
基于第一规范化表示来生成用于所述受约束的随机仿真的随机激励,其中所述第一规范化表示代表针对随机变量集合和状态变量集合而定义的约束集合,并且其中所述第一规范化表示基于所述随机变量集合和所述状态变量集合的第一子集而被构造;
监测与所述受约束的随机仿真相关联的参数,以获得监测数据;
至少基于所述监测数据来确定与所述状态变量集合的所述第一子集不同的、所述状态变量集合的第二子集;
基于所述随机变量集合和所述状态变量集合的所述第二子集来构造第二规范化表示,其中所述第二规范化表示代表所述约束集合;以及
基于所述第二规范化表示来生成用于所述受约束的随机仿真的随机激励。
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.一种用于在受约束的随机仿真期间自适应地执行状态-符号转换的装置,所述装置包括:
第一生成机制,其配置用于基于第一规范化表示来生成用于所述受约束的随机仿真的随机激励,其中所述第一规范化表示代表针对随机变量集合和状态变量集合而定义的约束集合,并且其中所述第一规范化表示基于所述随机变量集合和所述状态变量集合的第一子集而被构造;
监测机制,其配置用于监测与所述受约束的随机仿真相关联的参数,以获得监测数据;
转换机制,其配置用于:
至少基于所述监测数据来确定与所述状态变量集合的所述第一子集不同的、所述状态变量集合的第二子集;以及
基于所述随机变量集合和所述状态变量集合的所述第二子集来构造第二规范化表示,其中所述第二规范化表示代表所述约束集合;以及
第二生成机制,其配置用于基于所述第二规范化表示来生成用于所述受约束的随机仿真的随机激励。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/430,322 US8099690B2 (en) | 2009-04-27 | 2009-04-27 | Adaptive state-to-symbolic transformation in a canonical representation |
US12/430,322 | 2009-04-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101872369A CN101872369A (zh) | 2010-10-27 |
CN101872369B true CN101872369B (zh) | 2014-08-20 |
Family
ID=42993235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910207633.9A Active CN101872369B (zh) | 2009-04-27 | 2009-10-28 | 规范化表示中的自适应状态-符号转换 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8099690B2 (zh) |
CN (1) | CN101872369B (zh) |
TW (1) | TW201106185A (zh) |
WO (1) | WO2010129126A2 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9138143B2 (en) | 2010-08-17 | 2015-09-22 | Fujitsu Limited | Annotating medical data represented by characteristic functions |
US9002781B2 (en) | 2010-08-17 | 2015-04-07 | Fujitsu Limited | Annotating environmental data represented by characteristic functions |
US8386974B2 (en) * | 2011-04-14 | 2013-02-26 | Synopsys, Inc. | Accelerating coverage convergence using symbolic properties |
US8838523B2 (en) | 2011-09-23 | 2014-09-16 | Fujitsu Limited | Compression threshold analysis of binary decision diagrams |
US8909592B2 (en) * | 2011-09-23 | 2014-12-09 | Fujitsu Limited | Combining medical binary decision diagrams to determine data correlations |
US9177247B2 (en) | 2011-09-23 | 2015-11-03 | Fujitsu Limited | Partitioning medical binary decision diagrams for analysis optimization |
US9176819B2 (en) | 2011-09-23 | 2015-11-03 | Fujitsu Limited | Detecting sensor malfunctions using compression analysis of binary decision diagrams |
US9075908B2 (en) | 2011-09-23 | 2015-07-07 | Fujitsu Limited | Partitioning medical binary decision diagrams for size optimization |
US8510692B2 (en) * | 2011-09-29 | 2013-08-13 | Lexmark International, Inc. | Verification system and method using constrained random test parameter selection |
US8443316B1 (en) | 2011-11-09 | 2013-05-14 | Synopsys, Inc. | Accelerating coverage convergence and debug using symbolic properties and local multi-path analysis |
US9720792B2 (en) | 2012-08-28 | 2017-08-01 | Synopsys, Inc. | Information theoretic caching for dynamic problem generation in constraint solving |
US11468218B2 (en) | 2012-08-28 | 2022-10-11 | Synopsys, Inc. | Information theoretic subgraph caching |
US9373077B1 (en) * | 2012-11-06 | 2016-06-21 | Cadence Design Systems, Inc. | System and method for identifying constraint solver calls |
US8904320B2 (en) | 2013-03-13 | 2014-12-02 | Synopsys, Inc. | Solving multiplication constraints by factorization |
US10776545B2 (en) * | 2017-09-28 | 2020-09-15 | Taiwan Semiconductor Manufacturing Company Ltd. | Method of determing a worst case in timing analysis |
JP7048032B2 (ja) * | 2019-02-18 | 2022-04-05 | 日本電信電話株式会社 | データ生成装置、データ生成方法、及びプログラム |
CN115392048B (zh) * | 2022-09-14 | 2024-07-05 | 成都华大九天科技有限公司 | 一种基于约束求解引擎的带约束随机数生成方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398864A (zh) * | 2007-09-28 | 2009-04-01 | 富葵精密组件(深圳)有限公司 | 电路板制作仿真系统及方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7512912B1 (en) * | 2003-08-16 | 2009-03-31 | Synopsys, Inc. | Method and apparatus for solving constraints for word-level networks |
US7076753B2 (en) * | 2003-12-18 | 2006-07-11 | Synopsys, Inc. | Method and apparatus for solving sequential constraints |
US7290229B2 (en) | 2005-02-03 | 2007-10-30 | International Business Machines Corporation | Method and system for optimized handling of constraints during symbolic simulation |
US7299432B2 (en) * | 2005-04-14 | 2007-11-20 | International Business Machines Corporation | Method for preserving constraints during sequential reparameterization |
US7302417B2 (en) * | 2005-05-02 | 2007-11-27 | Synopsys, Inc. | Method and apparatus for improving efficiency of constraint solving |
US7353216B2 (en) * | 2005-05-02 | 2008-04-01 | Synopsys, Inc. | Method and apparatus for improving efficiency of constraint solving |
US7340704B2 (en) | 2005-06-23 | 2008-03-04 | International Business Machines Corporation | Method and system for optimized automated case-splitting via constraints in a symbolic simulation framework |
US7363603B2 (en) * | 2005-09-13 | 2008-04-22 | International Business Machines Corporation | Method and system for case-splitting on nodes in a symbolic simulation framework |
US7827022B2 (en) | 2006-09-27 | 2010-11-02 | Rockwell Automation Technologies, Inc. | Sequential function chart validation tool |
US8150787B2 (en) * | 2008-07-21 | 2012-04-03 | Synopsys, Inc. | Enhancing performance of a constraint solver across individual processes |
US8370273B2 (en) * | 2009-01-28 | 2013-02-05 | Synopsys, Inc. | Method and apparatus for constructing a canonical representation |
-
2009
- 2009-04-27 US US12/430,322 patent/US8099690B2/en active Active
- 2009-10-28 CN CN200910207633.9A patent/CN101872369B/zh active Active
-
2010
- 2010-04-07 WO PCT/US2010/030161 patent/WO2010129126A2/en active Application Filing
- 2010-04-13 TW TW099111438A patent/TW201106185A/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398864A (zh) * | 2007-09-28 | 2009-04-01 | 富葵精密组件(深圳)有限公司 | 电路板制作仿真系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100275169A1 (en) | 2010-10-28 |
WO2010129126A2 (en) | 2010-11-11 |
CN101872369A (zh) | 2010-10-27 |
TW201106185A (en) | 2011-02-16 |
US8099690B2 (en) | 2012-01-17 |
WO2010129126A3 (en) | 2011-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101872369B (zh) | 规范化表示中的自适应状态-符号转换 | |
JP4629682B2 (ja) | 有限メモリ検査における埋込みメモリの効率的なモデリング方法 | |
US7711536B2 (en) | System and method for verification aware synthesis | |
US10372856B2 (en) | Optimizing constraint solving by rewriting at least one bit-slice constraint | |
US11010511B2 (en) | Scalable boolean methods in a modern synthesis flow | |
US10699049B2 (en) | System design using accurate performance models | |
US8468479B2 (en) | Consistent hierarchical timing model with crosstalk consideration | |
US10534883B1 (en) | Local path-based analysis for circuit place and route optimization | |
US10540468B1 (en) | Verification complexity reduction via range-preserving input-to-constant conversion | |
US10534878B1 (en) | Circuit place and route optimization based on path-based timing analysis | |
US10296700B1 (en) | Multimode circuit place and route optimization | |
US8171437B2 (en) | Automated convergence of ternary simulation by saturation of deep gates | |
US10318690B2 (en) | Partitioning using a correlation meta-heuristic | |
US7168057B2 (en) | Targeted optimization of buffer-tree logic | |
US8050904B2 (en) | System and method for circuit symbolic timing analysis of circuit designs | |
US20040261043A1 (en) | Integrated design verification and design simplification system | |
US10691854B1 (en) | Graph-based timing analysis timing calibration | |
US10650109B1 (en) | Boolean satisfiability (SAT) solver | |
TWI488063B (zh) | 最佳化並驗證第一電路的設備,方法及電腦可讀取儲存媒體 | |
JP2016507818A (ja) | ネットリストアブストラクション | |
US8527922B1 (en) | Method and system for optimal counterexample-guided proof-based abstraction | |
US8701062B2 (en) | Apparatus and method for generating a netlist using non-uniquified module during logic synthesis stage | |
KR101832583B1 (ko) | 전력 상태 커버리지 메트릭 및 이의 추정 방법 | |
US8850372B2 (en) | Method and system for performing invariant-guided abstraction of a logic design | |
Chen et al. | Quantitative analysis of soft error propagation at rtl |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |