一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多输出实例的CNF生成方法、等价性验证方法、存储介质与流程

2022-04-27 03:02:01 来源:中国专利 TAG:

多输出实例的cnf生成方法、等价性验证方法、存储介质
技术领域
1.本发明涉及数字电路的等价性验证技术领域,尤其涉及一种多输出实例的cnf生成方法、基于sat的等价性验证方法。


背景技术:

2.在数字电路的等价性检查中,基于sat(satisfiability,布尔可满足性问题)的等价性验证方法被经常使用,一般布尔可满足性问题的布尔公式都表示成合取范式(conjunctive normal from,cnf)的形式。在电路的等价性检查中,可以将两个设计电路的结构用合取范式的形式表现,再利用高效的sat求解器对cnf进行求解,得到电路是否等价的结论。
3.现有技术中求得单输出的实例cnf的方法较多,但电路中存在多输出实例,现有求得cnf的方法存在耗时久,内存大的问题。由于多输出实例有多个输出端口,则同一个多输出实例根据输出端口的不同会得到多个不同的cnf,而同一个实例所连接的电路是一样的,对不同的端口进行迭代会重复迭代同一电路,从而导致耗时久,生成cnf多,内存增大。


技术实现要素:

4.为了解决现有技术中多输出实例的cnf生成时太过于耗时、占用内存大的技术问题,本发明提出了多输出实例的cnf生成方法、等价性验证方法、存储介质。
5.本发明提出的多输出实例的cnf生成方法,包括:遍历时,在存储结构中查找当前的端口net的输入端口net对应的cnf;如果没找到,则计算当前的端口net的引用次数,遍历当前的端口net连接的电路生成对应的cnf,若引用次数大于1,将该cnf以及引用次数绑定后存入所述存储结构;否则将该cnf与其他端口的cnf组合;如果找到,则直接从所述存储结构中调用所述cnf与其他端口的cnf组合,并将引用次数减1,并在引用次数为0时,从所述存储结构中删除对应的cnf及其关联数据。
6.进一步,所述存储结构为哈希表。
7.进一步,当引用次数为0时,从所述哈希表中删除所述cnf及其对应的节点。
8.进一步,所述当前的端口net的引用次数为该端口net连接的实例的输出端口数量的总和。
9.本发明提出的基于sat的等价性验证方法,采用上述技术方案所述的多输出实例的cnf生成方法生成对应的cnf。
10.本发明提出的计算机可读存储介质,用于存储计算机程序,其特征在于,所述计算机程序运行时执行上述技术方案所述的多输出实例的cnf生成方法。
11.进一步,所述计算机可读存储介质包括堆栈,所述cnf存储在堆栈上。
12.本发明提出的针对多输出实例cnf的生成方法是通过实例的net的引用次数对迭代实例的次数进行控制,生成cnf后将net与cnf绑定,并在实例的net引用次数减为0后,将
该实例所对应的cnf删除以减少内存占用。本发明对多输出的实例的输入端口net(与端口连接的线)的引用进行计算,对其连接的所有实例的输出端口数量和顶层模块的输出端口数量进行判断,进而计算引用次数,并将cnf与引用次数绑定。当每次迭代到同一条端口net后,从哈希表中取出第一次迭代完后的存入哈希表的cnf,并可利用其计算多输出实例的cnf,然后将其引用次数减1,直至引用次数为0后,将对应的cnf删除。本发明利用实例的端口net的引用次数与cnf绑定和存储重复引用cnf的哈希表来减少迭代重复次数,从而减小内存占用和缩短求得cnf时间的方法。
附图说明
13.下面结合实施例和附图对本发明进行详细说明,其中:图1是本发明一实施例的方法流程图;图2是本发明一实施例的电路图;图3是本发明另一实施例的电路图。
具体实施方式
14.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
15.由此,本说明书中所指出的一个特征将用于说明本发明的一个实施方式的其中一个特征,而不是暗示本发明的每个实施方式必须具有所说明的特征。此外,应当注意的是本说明书描述了许多特征。尽管某些特征可以组合在一起以示出可能的系统设计,但是这些特征也可用于其他的未明确说明的组合。由此,除非另有说明,所说明的组合并非旨在限制。
16.如图1所示,本发明的多输出实例的cnf生成方法在遍历时,若遍历到一个端口net,则在存储结构中查找当前的端口net的输入端口net对应的cnf。例如,当前的端口net作为输出端口net连接着实例1,那么就查找该实例1的输入端口net对应的cnf。
17.如果在存储结构中没找到该实例1的输入端口net对应的cnf,则计算当前的端口net的引用次数,也就是计算实例1的输出端口net的引用次数。接着遍历当前的端口net连接的电路,并生成对应的cnf,如果当前的端口net的引用次数大于1,将该cnf以及引用次数绑定后存入对应的存储结构。否则将该cnf与其他端口的cnf组合。
18.在一个具体实施例中,存储结构为哈希表。
19.如果在存储结构中找到该实例1的输入端口net对应的cnf,则直接从存储结构中调用该cnf与其他端口的cnf组合,并将该cnf对应的引用次数减1,并在引用次数为0时,从存储结构中删除对应的cnf及其关联数据。
20.如图2所示,下面以一个具体的例子来说明cnf的引用次数的计算方法。
21.实例inst的输出端口net对应的cnf的引用次数为实例inst1的两个输出端口、inst2的三个输出端口、inst3的2个输出端口以及直接输出端口port的总和,则引用次数为2 3 2 1=8。
22.如图3所示,下面以一个具体的例子来说明本发明的cnf生成过程。
23.当遍历到inst的输出端口net1时,在存储结构中查找inst的输入端口net是否有对应的cnf,如果没有找到,则基于端口net1所连接的电路生成对应的cnf,并计算该端口net1的引用次数,此时端口net1的引用次数为3,将net1对应的cnf以及引用次数存储到哈希表中,端口net2、端口net3的cnf也是如此遍历和计算。
24.当迭代到端口net4时,查找fadd的输入端口net1是否存在对应的cnf,在哈希表中能够找到,则直接调用对应的cnf,同时该cnf的引用次数减1,变为2。当迭代到端口net5或者端口net6时,该cnf的引用次数均会减1,迭代完端口net4至端口net6之后,该cnf的引用次数变为0,此时从哈希表中删除对应的节点以及对应的cnf。
25.在上述过程中,迭代端口net4至端口net6时,均可以通过哈希表直接获得端口net1,端口net2,端口net3的cnf,只需直接利用其计算,并将它们的引用次数-1。当端口net1对应的cnf的引用次数为0,这时没有任何电路需要它了,便可将其cnf从cnf哈希表中删除,并且清理掉cnf内存。
26.cnf存储在的哈希表使用的是c 中stl容器,net作为key,cnf作为value,而引用次数将作为一个成员值存储在cnf类中,以c 语言实现为例,每个cnf都会在c 程序中实例化为一个cnf类,与cnf绑定。
27.本发明还保护基于sat的等价性验证方法,该等价性验证方法采用上述技术方案的多输出实例的cnf生成方法生成对应的cnf。
28.本发明还保护计算机可读存储介质,该计算机可读存储介质,计算机程序运行时执行上述技术方案的多输出实例的cnf生成方法。并且计算机可读存储介质包括堆栈,cnf就存储在堆栈上,从而可以提高查找速度。
29.在本发明的上述介绍中,net为成为端口net、输入端口net或者输出端口net是基于实例而言,如果在不描述实例的前提下,则net称之为端口net,当有具体的实例时,基于net作为实例的输入或输出,将该net成为输入端口net或者是输出端口net,因而同一个net存在多种不同的表达方式。
30.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献