首页 / 专利库 / 软件 / 电子设计自动化 / 用于构造规范表示的方法和装置

用于构造规范表示的方法和装置

阅读:1031发布:2020-09-17

专利汇可以提供用于构造规范表示的方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了用于构造规范表示的方法和装置。一些 实施例 提供用于有助于构造规范表示(CR)的系统和技术,该CR表示逻辑函数集合的逻辑组合。在操作期间,系统可以接收CR规模限制。接着,系统可以基于逻辑函数集合来构造CR集合,其中CR集合中的各CR表示逻辑函数集合中的逻辑函数。系统然后可以组合CR集合的子集以获得组合式CR。接着,系统可以识别在与组合式CR组合时造成超过CR规模限制的有问题的CR。系统然后可以将有问题的CR和/或与有问题的CR关联的逻辑函数报告给用户,由此帮助用户识别逻辑函数集合中的错误。,下面是用于构造规范表示的方法和装置专利的具体信息内容。

1.一种用于有助于构造规范表示CR的由计算机执行的用于电子设计自动化的方法,所述CR表示逻辑函数集合的逻辑组合,所述方法包括:
接收CR规模限制;
基于所述逻辑函数集合来构造CR集合,其中所述CR集合中的各CR表示所述逻辑函数集合中的逻辑函数;
组合所述CR集合的子集以获得第一组合式CR;
识别所述CR集合中的第一CR,所述第一CR被预计为在与所述第一组合式CR组合时得到规模超过所述CR规模限制的第二组合式CR;并且
将与所述第一CR关联的第一逻辑函数报告给用户。
2.根据权利要求1所述的由计算机执行的方法,其中组合所述CR集合的所述子集包括:
对所述CR集合进行排序以获得CR函数排序;并且
根据所述CR函数排序来组合所述CR集合。
3.根据权利要求2所述的由计算机执行的方法,其中对所述CR集合进行排序包括:基于规模对所述CR集合进行排序。
4.根据权利要求1所述的由计算机执行的方法,其中构造所述CR集合包括:如果预计第二CR的规模超过所述CR规模限制,则将第二CR报告给所述用户。
5.根据权利要求1所述的由计算机执行的方法,其中识别所述CR集合中的所述第一CR包括:
开始组合所述第一CR与所述第一组合式CR,以生成得到的CR;
在所述第一CR与所述第一组合式CR组合时监视所述得到的CR的规模;并且响应于确定得到的CR的规模已经超过所述CR规模限制来停止组合所述第一CR与所述第一组合式CR。
6.根据权利要求1所述的由计算机执行的方法,其中CR是二元判决图BDD。
7.一种用于有助于构造规范表示CR的用于电子设计自动化的设备,所述CR表示逻辑函数集合的逻辑组合,所述设备包括:
接收装置,用于接收CR规模限制;
构造装置,用于基于所述逻辑函数集合来构造CR集合,其中所述CR集合中的各CR表示所述逻辑函数集合中的逻辑函数;
第一组合装置,用于组合所述CR集合的子集以获得第一组合式CR;
识别装置,用于识别所述CR集合中的第一CR,所述第一CR被预计为在与所述第一组合式CR组合时得到规模超过所述CR规模限制的第二组合式CR;并且
报告装置,用于将与所述第一CR关联的第一逻辑函数报告给用户。
8.根据权利要求7所述的设备,其中所述第一组合装置包括:
排序装置,用于对所述CR集合进行排序以获得CR函数排序;并且
第二组合装置,用于根据所述CR函数排序来组合所述CR集合。
9.根据权利要求8所述的设备,其中所述排序装置对所述CR集合进行排序包括:用于基于规模对所述CR集合进行排序的装置。
10.根据权利要求7所述的设备,其中所述构造装置包括:用于如果预计第二CR的规模超过所述CR规模限制,则将所述第二CR报告给所述用户的装置。
11.根据权利要求7所述的设备,其中所述识别装置包括:
用于开始组合所述第一CR与所述第一组合式CR以生成得到的CR的装置;
用于在所述第一CR与所述第一组合式CR组合时监视所述得到的CR的规模的装置;并且
用于响应于确定得到的CR的规模已经超过所述CR规模限制,来停止组合所述第一CR与所述第一组合式CR的装置。
12.根据权利要求7所述的设备,其中CR是二元判决图BDD。
13.一种用于构造规范表示CR的由计算机执行的用于电子设计自动化的方法,所述CR表示逻辑函数集合的逻辑组合,所述方法包括:
接收CR规模限制;
基于所述逻辑函数集合来构造CR集合,其中所述CR集合中的各CR表示所述逻辑函数集合中的逻辑函数;
对所述CR集合进行排序以获得CR函数排序{c1,c2,...,cn},其中ci是在所述CR函数排序中的第i个位置的CR,而n是所述CR集合的基数;
组合所述CR函数排序中的CR c1至cj-1,以获得中间CR,其中2<j<n;
响应于确定组合CR cj与所述中间CR将得到超过所述CR规模限制的CR,来选择CR ck,其中j+1≤k≤n;并且
尝试组合CR ck与所述中间CR。
14.根据权利要求13所述的由计算机执行的方法,其中对所述CR集合进行排序包括:
基于规模对所述CR集合进行排序。
15.根据权利要求13所述的由计算机执行的方法,其中CR是二元判决图BDD。
16.根据权利要求13所述的由计算机执行的方法,还包括:响应于确定对组合所述CR集合的尝试已经由于在各尝试期间超过所述CR规模限制而失败,来增加所述CR规模限制。
17.一种用于构造规范表示CR的用于电子设计自动化的设备,所述CR表示逻辑函数集合的逻辑组合,所述设备包括:
接收装置,用于接收CR规模限制;
构造装置,用于基于所述逻辑函数集合来构造CR集合,其中所述CR集合中的各CR表示所述逻辑函数集合中的逻辑函数;
排序装置,用于对所述CR集合进行排序以获得CR函数排序{c1,c2,...,cn},其中ci是在所述CR函数排序中的第i个位置的CR,而n是所述CR集合的基数;
第一组合装置,用于组合所述CR函数排序中的CR c1至cj-1,以获得中间CR,其中2<j<n;
选择装置,用于响应于确定组合CR cj与所述中间CR将得到超过所述CR规模限制的CR来选择CR ck,其中j+1≤k≤n;并且
第二组合装置,用于尝试组合CR ck与所述中间CR。
18.根据权利要求17所述的设备,其中所述排序装置包括:用于基于规模对所述CR集合进行排序的装置。
19.根据权利要求17所述的设备,其中CR是二元判决图BDD。
20.根据权利要求17所述的设备,所述设备还包括:用于响应于确定对组合所述CR集合的尝试已经由于在各尝试期间超过所述CR规模限制而失败,来增加所述CR规模限制的装置。

说明书全文

用于构造规范表示的方法和装置

技术领域

[0001] 本公开内容主要地涉及电子设计自动化。具体而言,本公开内容涉及用于构造例如二元判决图的规范表示的方法和装置。

背景技术

[0002] 设计和验证工具的发展已经使计算设备的迅速发展成为可能。实际上,没有这样的工具将几乎不可能设计和验证在如今的计算设备中普遍存在的复杂集成电路
[0003] 受约束的随机仿真方法作为一种基于定向测试的仿真的替代方式已经越来越普遍地用于对复杂设计的功能验证。在受约束的随机仿真方法中,生成随机矢量以满足设计的某些操作约束。通常将这些约束指定为测试台程序的部分。测试台自动化工具(TBA)使用测试台程序以针对随机变量集合生成随机解,从而满足对随机变量集合的约束集合。这些随机解然后可以用来为待验证的设计(DUV)生成有效随机刺激。使用仿真工具对这一刺激进行仿真,并且通常在测试台程序内检查仿真结果以监视功能覆盖范围,由此提供关于验证质量和完整性的置信度测量。
[0004] 约束求解器通常用来生成满足约束集合的随机矢量。约束求解器的基本功能用来求解以下约束满足问题:给定变量集合和约束集合,为变量集合找到满足约束集合的值集合。为求更佳软件维护和质量,约束求解器生成的这些解需要是可再现和确定的。另外,由于用户通常要求针对随机仿真的良好覆盖范围,所以约束解也需要均匀分布。
[0005] 遗憾的是,约束满足问题是NP-complete(NP完全)问题。另一方面,逻辑仿真通常随着设计的规模而线性地缩放。作为结果,刺激生成速度通常远远滞后于在仿真中使用刺激的速度。因此,希望提高约束求解器的性能,因为这可以明显提高受约束的随机刺激工具的总体性能。发明内容
[0006] 本发明的一些实施例提供用于有助于构造可以作为逻辑函数集合的组合来表达的逻辑函数的规范表示(CR)的系统和技术。
[0007] 在操作期间,系统可以接收CR规模限制。接着,系统可以基于逻辑函数集合来构造CR集合,其中CR集合中的各CR表示逻辑函数集合中的逻辑函数。在构造CR集合之时,如果系统检测到CR已经超过CR规模限制,则系统可以将CR和/或与CR关联的逻辑函数报告给用户。
[0008] 一旦成功构建至少一些CR,则系统可以尝试组合CR。在一些实施例中,系统可以用迭代方式组合CR。具体而言,系统可以对CR试探地进行排序以获得CR函数排序(该排序在根本上不同于变量排序),并且根据CR函数排序来迭代地组合CR。在组合CR之时,系统可以确定:在不操作CR规模限制的情况下一些CR是不能组合的。具体而言,系统可以成功组合CR子集以获得中间CR。然而,无论何时系统尝试组合任何剩余CR与中间CR,系统都可以确定违反CR规模限制。响应于确定在不操作CR规模限制的情况下一些CR不能进行组合,系统可以将CR报告给用户。用户可以使用这一信息快速识别约束中的错误。
[0009] 在一些实施例中,一旦系统确定在不操作CR规模限制的情况下一些CR不能进行组合,系统可以自动增加CR规模限制并且尝试对CR与增加的CR规模限制进行组合。附图说明
[0010] 图1图示了根据本发明一个实施例的在集成电路的设计和制作中的各个阶段。
[0011] 图2A图示了根据本发明一个实施例的约束。
[0012] 图2B图示了根据本发明一个实施例的BDD。
[0013] 图3图示了根据本发明一个实施例的可以如何根据约束集合来构造BDD。
[0014] 图4呈现了对根据本发明一个实施例的示出用于构造BDD的过程的流程图
[0015] 图5呈现了对根据本发明一个实施例的示出用于构造CR的过程的流程图。
[0016] 图6呈现了对根据本发明一个实施例的示出用于构造CR的过程的流程图。
[0017] 图7图示了根据本发明一个实施例的计算机系统
[0018] 图8图示了根据本发明一个实施例的装置。

具体实施方式

[0019] 呈现以下描述以使本领域技术人员能够实现和利用本发明,并且在特定应用及其要求的背景下提供该描述。本领域技术人员将容易清楚对公开的实施例的各种修改,并且这里限定的一般原理可以适用于其他实施例和应用而不脱离本发明的精神实质和范围。因此,本发明不限于所示实施例而是将被赋予以与这里公开的原理和特征一致的最广范围。
[0020] 集成电路(IC)设计流程
[0021] 图1图示了根据本发明一个实施例的在集成电路的设计和制作中的各个阶段。
[0022] 该过程可以从使用EDA处理(步骤110)设计的集成电路来实现的产品构想(步骤100)开始。在流片集成电路(事件140)之后,该设计可以经过制作处理(步骤150)以及封装和组装处理(步骤160)以产生成品芯片170。
[0023] EDA处理(步骤110)包括下文仅出于示例目的而描述的而且并非用来限制本发明的步骤112-130。具体而言,可以在与下文描述的序列不同的序列中执行这些步骤。
[0024] 在系统设计(步骤112)期间,电路设计者可以描述他们想要实施的功能。他们也可以进行如果-怎么样(what-if)的规划以精化功能、检验成本等。硬件-软件架构划分也可以出现在这一阶段。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括Model Architect、 System Studio和Design
[0025] 在逻辑设计和功能验证(步骤114)期间,可以编写用于系统中的模的VHDL或者Verilog代码,并且检验该设计的功能准确性,例如可以检验该设计以保证它产生正确输出。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括TMDesign Magellan 、 ESP和
[0026] 在合成和测试设计(步骤116)期间,VHDL/Verilog可以被转译成网表。另外,可以针对目标技术优化网表,并且可以设计和实施测试以检验成品芯片。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括DesignPhysical Test Compiler、Power CompilerTM、FPGA Compiler、
Tetra 和Design
[0027] 在网表验证(步骤118)期间,可以检验网表与时序约束的相符性和与VHDL/Verilog源码的对应性。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括 Prime 和
[0028] 在设计规划(步骤120)期间,可以构造和分析用于芯片的整个布图规划(floor plan)以便进行定时和顶层布线。可以在这一步骤使用的来自Synopsys公司的示例EDA软TM件产品包括Astro 和ICCompiler产品。
[0029] 在物理实施(步骤122)期间,可以在布局(布置)中对电路元件进行定位,并且这些电路元件可以被电耦合(布线)。可以在这一步骤使用的来自Synopsys公司的示例TMEDA软件产品包括Astro 和IC Compiler产品。
[0030] 在分析和提取(步骤124)期间,可以在晶体管级验证电路的功能并且可以提取寄生效应(parasitics)。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包TM TM括AstroRail 、PrimeRail、Prime 和Star-RCXT 。
[0031] 在物理验证(步骤126)期间,可以检验设计以保证制造、电问题、平板印刷问题TM和电路的正确性。Hercules 是可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品。
[0032] 在分辨率增强(步骤128)期间,可以对布局进行几何形状操控以提高设计的可制造性。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括Proteus/Progen、ProteusAF和PSMGen。
[0033] 在掩模数据预备(步骤130)期间,可以“流片”设计以产生在制作期间使用的掩模。可以在这一步骤使用的来自Synopsys公司的示例EDA软件产品包括 系列产品。
[0034] 可以在一个或者多个上述步骤期间使用一些实施例。具体而言,可以在功能验证期间使用一些实施例(步骤114)。
[0035] 受约束的随机仿真
[0036] 对给定的DUV被假设在其中工作的环境正确地进行限定是一个对于有效设计验证而言的重要先决条件。传统上,验证工程师已经使用测试台对DUV的环境进行建模。可以使用硬件描述语言来描述测试台。注意,测试台通常包括如下测试的集合,这些测试以适当方式约束环境以便覆盖DUV的目标表现集合。
[0037] 一些硬件语言(诸如System Verilog)支持用于在测试台中明确指定约束的若干高级构造。具体而言,明确约束可以用来以与DUV的协议一致的方式制约对测试台的随机选择。这样的测试台通常称为受约束的随机测试台。
[0038] 如上文提到的那样,随机刺激生成性能通常远远滞后于逻辑仿真性能。因此,提高约束求解器的性能可以对测试台的总体性能具有大量影响。因此,希望改进约束求解器的性能。
[0039] BDD(二元判决图)
[0040] 在典型受约束的随机仿真场合中,用户编写约束集合(例如使用System Verilog),并且在仿真期间,约束求解器将尝试发现满足由用户指定的约束的随机仿真刺激(随机变量赋值集合)。约束求解器可以使用BDD、ATPG、可满足性或者其他类似方式以发现可满足的解(仿真刺激)。
[0041] 具体而言,在基于BDD的约束求解器中,系统通常使用BDD来代表约束。将随机变量(用于仿真)作为BDD变量来对待,并且将(对这些变量的)约束的合取(conjunction)构造为由BDD表示的布尔函数。当且仅当使用赋予的值来对布尔函数求值得到“真(TRUE)”值时,向这些变量的赋值才会满足约束。
[0042] 图2A图示了根据本发明一个实施例的约束。
[0043] 图2A中所示约束是“a”、“b”和“c”这三个随机变量的布尔函数。随机变量通常用来对DUV进行建模,例如随机变量“a”可以表示DUV中的输入信号的逻辑状态。注意,在向随机变量的所有可能值的赋值之中,仅一些值的赋值对应于DUV的有效状态。由于受约束的随机仿真旨在关于有效状态验证DUV,所以需要一种用以制约随机变量的值的技术。受约束的随机仿真通常使用约束集合以制约随机变量的值。具体而言,在基于约束的仿真期间,测试台可以生成满足约束集合的随机输入(例如用于随机变量“a”、“b”和“c”的值的赋值)。以这一方式,通过使用约束集合,仿真和验证工具可以通过向DUV提供预计在正常操作期间出现的刺激来验证DUV。
[0044] 一种用于生成随机输入的方式是使用BDD。具体而言,系统可以首先生成表示约束集合的BDD。接着,系统可以使用BDD以生成随机输入。具体而言,BDD中与值“1”对应的从根节点到端节点的各路径可以与满足约束集合的赋值关联。
[0045] 图2B图示了根据本发明一个实施例的BDD。
[0046] BDD 200可以表示图2A中所示约束。BDD 200包括节点202、204、206、208、210、212、214和216。节点202可以是可以用来表示整个约束的根节点。节点204可以与变量“a”关联,节点206和208可以与变量“b”关联,而节点210和212可以与变量“c”关联。
节点214可以表示用于布尔函数的布尔值“真”或者“1”。换而言之,节点214可以表示其中已经满足约束的情形。对照而言,节点216可以表示布尔值“假”或者“0”。换而言之,节点216可以表示其中尚未满足约束的情形。
[0047] BDD 200中的有向边可以表示向随机变量的赋值。例如,在节点204与206之间的有向边可以与向随机变量“a”赋予“0”值关联。类似地,在节点208与212之间的有向边可以与向随机变量“b”赋予“1”值关联。
[0048] BDD中从根节点(例如节点202)到用于布尔值“真”的端节点(例如节点214)的有向路径可以对应于向随机变量的如下赋值,该赋值满足由BDD表示的约束集合,例如图2A中所示约束。例如,路径218始于节点202而止于节点214。与路径218关联的赋值是:
a=0,b=1和c=1。显然,这一赋值造成图2A中所示布尔函数求值得到“真”。
[0049] 一旦系统构建BDD,它可以通过确定从根节点到与“真”值对应的端节点的所有相异路径,并且通过从所有相异路径的集合中随机选择路径,来生成受约束的随机刺激。
[0050] 图3图示了根据本发明一个实施例的如何可以根据约束集合构造BDD。
[0051] 假设受约束的随机仿真需要生成满足约束集合302的随机输入。约束求解器可以构建用于各约束的BDD,即一个BDD各自用于约束C1、C2和C3。接着,求解器可以通过使用通过组合个别BDD而构造的BDD来表示约束集合的合取。
[0052] 在一些实施例中,求解器可以用迭代方式组合BDD。例如在步骤304中,求解器可以从如下BDD开始,该BDD用于与约束C1相同的约束K1。接着在步骤306中,求解器可以构造如下BDD,该BDD用于与约束C1和C2的合取相等的约束K2。注意,可以通过组合用于K1和C2的BDD来为约束K2构造BDD。最后在步骤308中,求解器可以构造用于约束K3的BDD,该约束K3等于约束C1、C2和C3的合取。注意,可以通过组合用于K2和C3的BDD来构造用于约束K3的BDD。另外注意,用于K3的BDD是用于约束集合302的BDD。用于K3的BDD可以用来生成满足约束集合302的随机输入。可以在Jun Yuan等人于2006年1月在Springer的Constraint-BasedVerification中找到关于如何构建和组合BDD的更多细节。
[0053] 注意,用户有可能编写很难使用基于BDD的约束求解器来求解的约束集合。具体而言,当基于BDD的约束求解器尝试为约束集合生成BDD时,BDD可能“扩张(blow up)”,例如BDD的规模可能变得如此之大,以至于构造BDD或者使用BDD以生成用于约束集合的解变得不切实际。注意,扩张问题不限于基于BDD的方式。例如,如果约束求解器使用基于ATPG(自动测试模式生成)的方式,则用户可能感觉约束求解器始终在力图生成解。
[0054] BDD扩张问题是基于约束的随机刺激中的主要性能问题之一。换而言之,随机刺激生成滞后于逻辑仿真的原因之一在于BDD扩张问题。如果系统可以帮助用户识别和修复其中预计BDD扩张的情形,则系统可以明显改善约束求解器的总体性能。具体而言,用户将通常想要知道约束为什么造成BDD扩张,并且更重要的是如何修复该问题或者如何解决该问题。该扩张常常由若干约束造成。在一些情形中,约束就它本身而言可能造成BDD扩张,而在其他情形中,由于多个约束之间的交互而出现BDD扩张。如果系统可以识别造成BDD扩张的约束,则它可以帮助用户识别约束中的错误,并且也帮助用户确定如何重写约束以修复BDD扩张问题。一旦用户已经重写约束以避免扩张问题,则约束可由约束求解器用来生成随机输入。
[0055] 注意,受约束的随机验证仅为使用BDD的许多应用之一。因此,上述BDD扩张问题不限于受约束的随机验证应用;BDD扩张问题可以出现于组合BDD以获得组合式BDD的任何应用中。继而一种通过帮助解决BDD扩张问题来有助于构造BDD的技术或者系统可以用于组合BDD的任何应用中。
[0056] 另外,扩张问题不限于BDD。具体而言,逻辑函数的任何规范表示都可能出现扩张问题。具体而言,系统可以基于逻辑函数集合来构造CR。当系统尝试组合个别CR以获得组合式CR时可能出现扩张问题。
[0057] 注意,逻辑函数的规范表示一般可以是满足以下性质的任何表示:如果两个逻辑函数等效,只要在构造规范表示的同时使用相同变量排序(或者等效特性),则它们的规范表示将是相同的。规范表示的例子包括但不限于二元判决图、二元矩量图(binary momentdiagram)、零抑制二元判决图、多值判决图、多端二元判决图、代数判决图等。
[0058] 以下章节描述如何可以根据约束集合来构造BDD以及如何可以根据逻辑函数集合来构造CR。
[0059] 根据约束集合来构造BDD
[0060] 本发明的一些实施例提供一种系统,该系统可以帮助用户识别约束集合为何造成得到的BDD扩张。具体而言,系统可以针对约束求解器来设置对运行期和/或存储器使用(包括BDD规模)的任意限制L。在构建BDD之时,如果求解器超过这一限制,则系统可以推断BDD已经扩张。
[0061] 如上文说明的那样,在受约束的随机仿真场合中,给定约束集合K={c1,c2,...,cn},其中各cn为约束。为了生成随机输入,约束求解器通常为各约束构建BDD,然后组合BDD以获得表示个别BDD的合取的组合式BDD。造成合取结果求值为1或者“真”的BDD变量的赋值将构成对约束的解。在为各约束构建BDD的过程期间,如果BDD扩张(超过BDD限制、存储器限制或者运行期限制),则系统可以推断这一约束至少是BDD构造过程持续如此之久的原因之一。系统可以将这一约束报告给用户,由此帮助用户识别BDD扩张问题的根源起因。
[0062] 注意,BDD可能由于不良的变量排序而扩张(并且即使启用动态变量排序,它仍然可能由于不同约束中相冲突的排序要求而扩张)。
[0063] 注意,变量排序在根本上不同于函数排序。变量排序是指变量用来形成BDD的顺序。另一方面,函数排序是指其中组合约束(或者逻辑函数)的顺序。注意,改变其中约束(或者逻辑函数)进行组合的顺序并不改变变量排序。反言之,在构造BDD时改变选择变量的顺序并不改变对约束进行组合的顺序。
[0064] 为了帮助用户识别特定变量排序是否造成扩张,一些实施例可以使用尝试不同变量排序的第二BDD管理器,来为有问题的约束构建BDD。如果即使在第二BDD管理器尝试不同变量排序之后BDD构造仍然扩张,则系统可以推断问题在于约束(例如约束可能过于复杂而无法使用BDD来表示)而不在于变量排序。因而,系统可以向用户报告:问题在于约束本身而不在于特定变量排序。这可以让用户免于将时间浪费在尝试通过改变变量排序来解决BDD扩张问题。另一方面,如果改变变量排序修复扩张问题,则系统可以推断BDD扩张问题由相冲突的BDD变量排序要求造成。系统可以打印造成相冲突的BDD变量排序要求的约束或者在打印它们之前进一步使得约束变小。
[0065] 即使用于各约束的BDD没有扩张,当在合取运算期间组合BDD时BDD仍然可以扩张。如上文说明的那样,一些实施例可以迭代地构建{c1,c2,...,cn}的合取,其中中间BDD J1、J2、...、Jn构造如下:
[0066] J1=c1
[0067] J2=J1·c2
[0068] Ji=Ji-1·ci
[0069] Jn=Jn-1·cn
[0070] 如果可以无扩张地构造上述合取,则整个约束集合将已经是可求解的。然而,当组合两个BDD时,所得到的BDD可能变得不切实际地大。注意,如果按不同顺序进行约束{c1,c2,...,cn}的合取,则中间合取BDD:J1、J2、...、Jn-1将是不同的,但是最终合取结果Jn将是相同的。有可能的是按特定顺序组合BDD造成中间BDD扩张,但是如果按不同顺序组合BDD,则中间BDD将不扩张。遗憾的是,确定不造成扩张的BDD函数排序是一个NP-Hard问题。
[0071] 本发明的一些实施例检测是否预计中间BDD扩张并且对BDD重新排序以尝试避免扩张问题。具体而言,一些实施例利用其中以增加BDD规模为序对约束{c1,c2,...,cn}进行排序的贪婪试探法(greedy heuristic)。例如,系统可以基于对应BDD中的节点数目对约束进行排序。本领域技术人员将清楚可以使用其他方式对约束进行排序。例如,系统可以基于用于关联的BDD的存储器总数量对约束进行排序。另外,系统可以基于约束中的状态变量和/或常量数目对约束进行排序。一旦系统按特定顺序对BDD进行排序,则系统可以迭代地进行如上所述的合取运算。
[0072] 为了说明系统可以如何对约束重新排序,假设合取运算在系统尝试计算Ji时扩张。在这一点,系统可以将如下消息打印给用户,该消息向用户通知可以将约束{c1,c2,...,ci-1}全部一起求解、但是向其添加约束ci造成得到的BDD Ji超过容量限制L。注意,向用户通知哪个约束确切造成组合运算扩张对于调试扩张问题而言已经颇为有用。在一些实施例中,系统可以在这一点终止BDD构造过程。然而,其他实施例可以对约束重新排序并且尝试使用新的BDD函数排序来构建BDD。
[0073] 在一些实施例中,系统可以从{ci+1,ci+2,...,cn}选择约束cj并且尝试进行Ji-1与cj之间的合取。如果cj也造成扩张,则系统可以从约束集合选择尚未使用的另一约束。合取过程可以用这一方式继续直至已经穷尽所有约束,从而各剩余约束如果与中间BDD组合则将造成扩张。接着,系统可以报告成功“合取”的约束集合以及造成扩张的约束集合。例如在上述场合中,如果约束{ci,ci+1,ci+2,...,cn}中的各约束造成扩张,则系统可以向用户报告它能够成功进行对约束{c1,c2,...,ci-1}的合取运算并且剩余约束{ci,ci+1,ci+2,...,cn}中的各约束造成扩张。这一信息可以帮助用户识别约束中的一个或者多个错误。具体而言,当用户查看这两个约束集合时,用户可能能够识别约束中造成扩张的变量或者表达式。
[0074] 例如,假设电路中的16位乘法器造成BDD扩张。当用户查看造成扩张的约束时,用户可以立即认识到扩张由16位乘法器造成。例如,用户可以注意到造成扩张的所有约束以某种方式与16位乘法器有关,因此用户可以正确地推断扩张由16位乘法器造成。注意,电路将最可能包括大量模块,并且除非系统确切报告哪些约束造成扩张,用户才可以结束将大量时间浪费在识别问题。一旦用户识别16位乘法器造成扩张,用户具有用以克服问题的许多选项。例如,用户可以重写与16位乘法器关联的约束,或者用户可以用更简易的模块如8位乘法器取代16位乘法器。
[0075] 作为另一示例性例子,假设电路包括浮点模块和整数模块,并且假设这些模块均没有被假设为同时接通。当用户回顾造成扩张的约束时,用户可以认识到由于约束允许浮点模块和整数模块均同时接通,所以约束被不正确地编写。一旦用户认识到这一错误,用户可以重写约束以修复错误。
[0076] 基于以上描述,以下段落描述可以用来构造BDD的系统和技术。注意,这些系统和技术不限于受到约束随机验证并且它们不限于合取;它们可以用于涉及到组合BDD的任何应用中。
[0077] 图4呈现了对根据本发明一个实施例的示出用于构造BDD的过程的流程图。
[0078] 该过程可以通过为集合中的各约束构建BDD(步骤402)来开始。接着,系统可以确定在被构造之时是否有任何BDD扩张(步骤404)。如果BDD扩张,则系统可以将关联约束报告给用户(步骤406)。另一方面,如果没有BDD扩张,则系统然后可以对集合中的约束进行排序(步骤408)。
[0079] 系统然后可以将集合中的第一约束移动到合取(步骤410)。接着,系统可以从集合选择另一约束(步骤412)。系统然后可以确定是否预计所得到的BDD在合取运算期间扩张(步骤414)。
[0080] 如果所得到的BDD扩张,则系统然后可以确定它是否已经尝试所有约束(步骤418)。如果系统尚未尝试所有约束,则系统可以回到步骤412并且选择集合中的另一约束。另一方面,如果系统已经尝试所有约束,则系统可以将集合中的约束报告给用户(步骤
422)并且终止该过程。注意,报告给用户的约束是造成合取过程扩张的约束。在一种变化中,系统可以增加BDD规模限制并且尝试通过使用新的BDD规模限制来组合BDD。系统可以在它增加BDD规模限制时通知用户。
[0081] 另一方面,如果所得到的BDD没有扩张,则系统可以更新合取结果并且从集合中去除所选约束(步骤416)。系统然后可以确定是否已经尝试所有约束(步骤420)。如果是这样,则系统可以报告合取运算成功(步骤424)并且终止该过程。另一方面,如果尚未尝试所有约束,则系统可以回到步骤412并且选择集合中的另一约束。
[0082] 根据逻辑函数集合来构造CR
[0083] 注意,扩张问题不限于针对BDD集合进行合取运算。具体而言,扩张问题可能在组合表示逻辑函数集合的CR集合的同时出现。
[0084] 图5呈现了对根据本发明一个实施例的示出用于构造CR的过程的流程图。
[0085] 该过程可以通过接收希望为其构造CR的逻辑函数集合(步骤502)来开始。
[0086] 系统可以使用CR规模限制以确定CR合适已经变得太大。CR规模限制一般可以基于一个或者多个标准,这些标准表明是否预计构造CR造成性能问题。
[0087] 例如,经验证据可以表明,只要CR中的元素(例如节点或者边)数目超过特定阈值,CR构造过程将需要不切实际的较长时间的可能性变高。在这样的情形中,可以按照CR的元素(例如节点或者边)表达CR规模限制。可以用来表达CR规模限制的其他标准包括为了存储CR而需要的存储器数量以及为了构造CR而需要的处理器周期数目。
[0088] 在一些实施例中,系统可以按照多个参数或者标准来表达CR规模。例如,系统可以使用两个阈值来表达CR规模:存储器阈值和处理器周期阈值。在这一例子中,如果超过存储器阈值或者超过处理器周期阈值,则CR将超过CR规模。
[0089] 继续图5中所示流程图,系统然后可以基于逻辑函数集合来构造CR集合,其中CR集合中的各CR表示逻辑函数集合中的逻辑函数(步骤504)。系统可以在根据各约束创建CR的同时监视CR的规模。如果特定CR的规模超过CR规模限制,则系统可以将CR报告给用户。在一些实施例中,当系统确定CR的规模已经超过CR规模限制时,系统可以终止该过程。在其他实施例中,系统可以继续为其他约束构建CR。
[0090] 接着,系统可以对CR集合进行排序以获得CR函数排序(c1,c2,...,cn),其中ci是CR函数排序中的第i个位置,而n是CR集合的基数(步骤506)。注意,变量排序从根本上不同于函数排序。变量排序是指如下顺序,按照该顺序来选择具体逻辑函数的变量以形成CR(注意这适用于需要变量排序的CR)。另一方面,函数排序是指其中组合逻辑函数的顺序。
[0091] 系统然后可以组合CR函数排序中的CR c1至cj-1以获得中间CR,其中2<j<n(步骤508)。注意,组合CR获得如下CR,该CR表示与CR关联的逻辑函数的逻辑组合。因此,中间CR表示与CR函数排序中的CR c1至cj-1相关联的逻辑函数的逻辑组合。当逻辑运算用来创建包括两个逻辑函数的逻辑表达式时,认为逻辑上组合两个逻辑函数。例如,假设a、b、c和d是逻辑函数。然后,以下逻辑表达式表示逻辑函数a、b、c和d的逻辑组合:(a·b·c·d)+(b·c.d)。
[0092] 接着,系统可以尝试组合CR cj与中间CR(步骤510)。系统然后可以确定是否超过CR规模限制(步骤512)。
[0093] 如果未超过CR规模限制,则系统可以使用下一迭代中的中间CR(步骤518)。另一方面,响应于确定将CR cj与中间CR进行组合而得到超过CR规模限制的CR,系统可以选择CR ck,其中j+1≤k≤n(步骤514)。在一些实施例中,系统可以将CR cj和/或与CR cj关联的逻辑函数报告给用户。系统然后可以尝试组合CR ck与中间CR(步骤516)。另外,在一些实施例中,系统可以响应于确定对组合CR集合的尝试已经由于在各尝试期间超过CR规模限制而失败,来自动增加CR规模限制。
[0094] 图6呈现了对根据本发明一个实施例的示出用于构造CR的过程的流程图。
[0095] 与前文一样,该过程可以通过接收希望为其构造CR的逻辑函数集合(步骤602)来开始。接着,系统可以接收CR规模限制(步骤604)。系统然后可以基于逻辑函数集合来构造CR集合,其中CR集合中的各CR表示逻辑函数集合中的逻辑函数(步骤606)。
[0096] 接着,系统可以组合CR集合的子集以获得组合式CR(步骤608)。注意,系统可以按任何顺序组合CR。如上所述,在一些实施例中,系统可以基于CR的规模对CR进行排序并且从最小到最大组合CR。无论怎样对CR进行排序,系统通常将一次一个地组合CR。因此,在组合过程期间的任何给定点,系统都将CR的一个子集组合。注意,组合CR得到如下CR,该CR表示与CR关联的逻辑函数的逻辑组合。
[0097] 系统然后可以识别CR集合中的如下CR,预计该CR在与组合式CR组合时得到规模超过CR规模限制的CR(步骤610)。系统然后可以将识别的CR报告给用户(步骤612)。具体而言,系统可以开始将CR和组合式CR进行组合以生成得到的CR。接着,系统可以在CR与组合式CR组合时监视得到的CR的规模。如果系统确定得到的CR的规模已经超过CR规模限制,则系统可以停止对CR与组合式CR的组合并且将CR报告给用户。
[0098] 具体而言,当系统选择CR并且尝试将它与组合式CR进行组合时存在两种可能性。第一可能性在于,组合过程完成而未超过CR规模,并且得到的CR是所选CR与组合式CR的组合。另一可能性在于,在组合所选CR与组合式CR的同时超过CR规模限制。如果发生这样的情况,则系统可以将识别的CR报告给用户,由此帮助用户识别约束集合中的错误。
[0099] 图7图示了根据本发明一个实施例的计算机系统。
[0100] 计算机系统702包括处理器704、存储器706和储存器708。计算机系统702可以与显示器714、键盘710和指示设备712耦合。存储器708可以存储在由处理器704处理时使计算机系统702构造CR的指令和/或数据。具体而言,储存器708可以存储逻辑函数716、构造模块718、排序模块720、组合模块722和报告模块724。在操作期间,计算机系统
702可以将指令和/或数据从储存器708加载到存储器706中,并且使用处理器704来处理指令和/或数据。
[0101] 构造模块718可以包括在由处理器704执行时使计算机系统702为逻辑函数716构造CR的指令。排序模块720可以包括在由处理器704执行时使计算机系统702对构造718模块构造的CR进行排序的指令。组合模块722可以包括在由处理器704执行时使计算机系统702根据给定顺序来组合CR的指令。报告模块724可以包括在由处理器704执行时使计算机系统702报告计算机系统不能组合的CR的指令。在一些实施例中,系统可以使用显示器714来报告CR。
[0102] 图8图示了根据本发明一个实施例的装置。
[0103] 装置802可以包括可以经由有线或者无线通信信道来相互通信的多个机构。具体而言,装置802可以包括接收机构804、构造机构806、排序机构808、组合机构810和报告机构812。在一些实施例中,接收机构804可以被配置成接收将要为其构造CR的逻辑函数集合,构造机构806可以被配置成为逻辑函数集合构造CR,排序机构808可以被配置成对CR进行排序以获得CR函数排序,组合机构810可以被配置成根据CR函数排序来组合CR,而报告机构812可以被配置成报告装置802不能组合的CR。
[0104] 装置802可以是计算机系统的部分或者是能够与其他计算机系统和/或设备通信的单独设备。可以使用一个或者多个集成电路来实现装置802。具体而言,装置802中的一个或者多个机构可以实施为处理器的部分。
[0105] 结论
[0106] 在本具体实施方式中描述的数据结构和代码通常存储于计算机可读存储设备上,该设备可以是能够存储用于由计算机系统使用的代码和/或数据的任何设备。计算机可读存储设备包括但不限于易失性存储器、非易失性存储器、磁和光学存储设备(比如盘驱动、磁带、CD(光盘)、DVD(数字通用盘或者数字视频盘)或者现在已知或者以后开发的能够存储计算机可读介质的其他介质。
[0107] 可以将具体实施方式这一节中描述的方法和过程实施为能够存储于如上所述计算机可读存储设备中的代码和/或数据。当计算机系统读取和执行计算机可读存储设备上存储的代码和/或数据时,计算机系统实现作为数据结构和代码来体现的并且存储于计算机可读存储设备内的方法和过程。
[0108] 另外,可以在硬件模块中包括所述方法和过程。例如,硬件模块可以包括但不限于专用集成电路(ASIC)芯片、现场可编程阵列(FPGA)和现在已知或者将来开发的其他可编程逻辑器件。当激活硬件模块时,硬件模块实现硬件模块内包括的方法和过程。
[0109] 仅出于示例和描述的目的已经呈现对本发明实施例的前文描述。本意并非让它们穷举本发明或者使本发明限于公开的形式。因而,本领域技术人员将清楚许多修改和变化。此外,本意并非让上述公开内容限制本发明。本发明的范围由所附权利要求限定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈