CN115392048A - 一种基于约束求解引擎的带约束随机数生成方法 - Google Patents
一种基于约束求解引擎的带约束随机数生成方法 Download PDFInfo
- Publication number
- CN115392048A CN115392048A CN202211113560.9A CN202211113560A CN115392048A CN 115392048 A CN115392048 A CN 115392048A CN 202211113560 A CN202211113560 A CN 202211113560A CN 115392048 A CN115392048 A CN 115392048A
- Authority
- CN
- China
- Prior art keywords
- solving
- constraint
- constraints
- random
- engine
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/04—Constraint-based CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于约束求解引擎的带约束随机数生成方法,包括以下步骤:1)编译用户在EDA数字仿真器中输入的仿真代码,获取随机变量、约束、求解次数,其中,所述求解次数记作N;2)对所述随机变量进行比特提取,将提取的随机变量的每一个比特作为独立的随机变量;3)利用表达随机的约束,生成随机属性约束:对于第一次求解,利用随机函数为随机变量每一个比特随机生成0或1的值,获得随机属性约束;对于第2次到第N次求解,对上一次的求解结果,随机选择选定个数的比特,进行比特值的翻转,获得随机属性约束;4)将所有约束送入约束求解引擎进行求解。本发明能够在保证随机性的前提下,很大程度上提升效率。
Description
技术领域
本发明涉及EDA数字仿真工具技术领域,具体涉及一种基于约束求解引擎的带约束随机数生成方法。
背景技术
在EDA数字仿真工具中,经常会用到随机数。利用现有EDA数字仿真工具中的约束随机值(Constraint Random)(专门用于实现随机测试法的语法模块),可以生成带约束的随机数。通常做法是需要将用户设置的约束输入约束求解引擎并求解,但是,约束求解引擎输入用户定义的约束后,如果求解成功,引擎就会给出一个解;但是如果需要多个满足约束的解,约束求解引擎常规使用方式就不能满足需要了。所以,需要加入表达随机的约束,使得约束求解引擎能够在多次求解中给出满足约束的解空间里面解。
另外,在生成随机约束时,希望遍历整个未知的解空间,使得解空间的每一个解都可以尽可能地被等概率取到。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种基于约束求解引擎的带约束随机数生成方法,能够在保证随机性的前提下,很大程度上提升效率。
为实现上述目的,本发明提供的基于约束求解引擎的带约束随机数生成方法,包括以下步骤:
1)编译用户在EDA数字仿真器中输入的仿真代码,获取随机变量、约束、求解次数,其中,所述求解次数记作N;
2)对所述随机变量进行比特提取,将提取的随机变量的每一个比特作为独立的随机变量;
3)利用表达随机的约束,生成随机属性约束:
对于第一次求解,利用随机函数为随机变量每一个比特随机生成0或1的值,获得随机属性约束;
对于第2次到第N次求解,对上一次的求解结果,随机选择选定个数的比特,进行比特值的翻转,获得随机属性约束,所述翻转,是指将0翻转成1或者将1翻转成0;
其中,在第2次到第N次求解之前,先清除上一次求解设定的表达随机属性的所有约束;
4)将所有约束送入约束求解引擎进行求解。
进一步地,所述约束,包括,硬约束和软约束,所述硬约束为用户设置的必须要满足的约束,所述软约束包括,用户特指的不需要必须满足的约束或根据待求解变量设置的按比特表达随机的约束。
进一步地,所述步骤2)还包括,将用户输入的约束的代数形式转换为数理逻辑中的合取范式的形式。
进一步地,所述步骤3)对于第2至第N次求解,还包括,在求解之前先清除上一次求解设定的表达随机属性的所有约束。
进一步地,所述选定个数等于所述随机变量长度/固定值,所述固定值根据约束求解引擎进行选择。
进一步地,所述步骤4)进一步包括,对于第一次进行约束求解获得的随机属性的软约束,约束求解引擎将其与用户输入的硬约束进行求解,在求解过程中进行冲突判断:
如果不冲突,则输出求解结果;
如果冲突,则求解失败,退出求解。
进一步地,所述步骤4)进一步包括,对于第2至第N次约束求解,约束求解引擎将判断是否所有表达随机的约束都失效了:
如果失效了,则清空所有表达随机的约束,按照第1次约束求解情况进行操作;
如果并非所有表达随机的约束都失效了,则输出求解结果。
更进一步地,输出求解结果之后,需要判断是否为最后一次求解:
如果不是最后一次求解,则继续进行所述步骤3)-所述步骤4);
如果是最后一次求解,则求解结束;
其中,最后一次求解的次数等于N。
为实现上述目的,本发明还提供一种电子设备,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的程序,所述处理器运行所述程序时执行上述的基于约束求解引擎的带约束随机数生成方法的步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述的基于约束求解引擎的带约束随机数生成方法的步骤。
本发明的一种基于约束求解引擎的带约束随机数生成方法,与现有技术相比具有如下有益效果:按照上述随机属性的方式生成带约束的随机数,能够在保证随机性的前提下,很大程度上提升效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为根据本发明的基于约束求解引擎的带约束随机数生成方法流程图;
图2为EDA工具中的system Verilog代码示意图;
图3为表达随机的约束的代码示意图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。“多个”应理解为两个或以上。
术语
随机变量:需要被随机的变量,具体采用了System Verilog语法中规定的数据类型,详见相关语法标准;
约束:对随机变量的限制,限制范围,数值等;在本专利中涉及到硬约束(hardconstraint)和软约束(soft constraint);其中硬约束是指必须满足的约束,如果和其他硬约束发生冲突,那么带约束的随机数就生成失败;软约束是指尽可能需要满足的约束,并且可以设定优先级,优先级高的软约束和优先级低的软约束发生冲突时,会使优先级的软约束失效;当硬约束和软约束发生冲突时,软约束会失效;
约束求解引擎:也可以叫约束求解器,是专门用来求解约束满足问题的,输入若干约束后,如果有解,它会给出一个满足约束的解,如果无解,就会求解失败。
下面,将参考附图详细地说明本发明的实施例。
实施例1
图1为根据本发明的基于约束求解引擎的带约束随机数生成方法流程图,下面将参考图1,对本发明的基于约束求解引擎的带约束随机数生成方法进行详细描述。
在步骤101,用户通过EDA数字仿真器中的仿真代码,设置随机变量、约束、求解次数。
本发明实施例中,用户设置的必须要满足的约束默认为硬约束,如果设定了软约束,在执行的时候会将这些软约束的优先级调得相对较高,所述软约束包括,用户特指的不需要必须满足而需要尽可能满足的约束或根据待求解变量设置的按比特表达随机的约束。
在步骤102,对随机变量进行比特提取,将随机变量的每一个比特提取出来单独作为随机变量。
本发明实施例中,随机变量的比特提取,是将随机变量的每一个比特提取出来单独作为随机变量,以供后续设置表达随机的约束;为方便表达,后续我们将用x代表随机变量,x[i]代表该随机变量的第i个比特。
在该步骤中,还需要将用户输入的约束的代数形式转换为数理逻辑中的合取范式的形式,转换方法按照数理逻辑理论的方法。该方法为本领域常用方法,在此不再展开叙述。
在步骤103,进行约束求解,得到随机属性约束。
本发明实施例中,如果是第一次进行约束求解,则对随机变量x的所有比特,利用c++内置的随机函数分别随机一个0或者1的值,设置约束x[i]等于该值(0或1),这是关于随机属性的约束,所以将优先级设置的相对低;因为当和用户设置的约束发生冲突时,用户设置的约束要优先得到保障。
本发明实施例中,如果不是第一次进行约束求解,则每次求解之前,先清除上一次求解设定的表达随机属性的所有约束,然后,对上一次的求解的结果,利用表达随机的约束,生成随机属性约束,即,随机选择(随机变量长度/固定值)个数的比特,将值进行翻转,翻转的含义是,例如上次求解该比特值解出来等于1,那么这次就输入该比特值等于0的约束,其中,固定值针对不同约束求解引擎选择,例如boolecture选择4效果较好。
在步骤104,将得到的随机属性约束,送入约束求解引擎进行求解。
本发明实施例中,对于第一次进行约束求解获得的随机属性约束,约束求解引擎将其与用户输入的硬约束进行冲突判断,如果不冲突,则输出求解结果;如果冲突,则求解失败,退出求解。
如果不是第一次进行约束求解的情况,约束求解引擎将判断是否所有表达随机的约束都失效了,如果失效,则清空所有表达随机的约束,按照步骤103中的第一次约束求解情况进行操作以及后续操作;如果并非所有表达随机的约束都失效了,则输出求解结果。
在本发明实施例中,输出求解结果之后,需要判断是否为最后一次求解,如果不是,则继续进行步骤103-步骤104,如果是最后一次求解,则求解结束。其中,是否为最后一次求解是根据用户设置的求解次数确定的。
实施例2
下面结合一个更加具体的实施例,来对本发明的基于约束求解引擎的带约束随机数生成方法进行说明,其中约束求解引擎为boolecture约束求解引擎。
图2示出了EDA工具中的system Verilog代码,其中,经过数字仿真工具的对system Verilog代码进行编译、解析,可以提取到用户输入了一个3比特的随机变量,并添加了硬约束a<=2,以及需要求解10次。按照上述流程求解10次过程中,由于长度是8,所以需要对2比特位进行增量式随机。图3示出了表达随机的约束,下面将就前几次求解进行分析:
第一次求解:对每一位比特进行随机,随机结果是00111101;很显然,它的值和用户输入的a<=2发生了冲突;那么随机结果生成的八个约束中,发生冲突的是3-6比特位的约束,让这些位的约束失效;那么求解过程中生效的约束是就是a)a<=2;b)a[1]==1;c)a[2]==0;d)a[7]==0;e)a[8]==0;求解出来结果为1;
第二次求解:需要第一次求解的结果,第一次求解结果为1,按比特展开就是00000001;随机结果是对第2比特和第6比特进行翻转,翻转结果就是00100011;很显然,第6比特的约束发生冲突失效,此时输入的约束为:a)a<=2;b)a[2]=1;c)a[1]=1;很显然还是存在冲突的,按照求解引擎的不同,会把后面两个约束其中一个失效掉,在boolecture求解引擎中,结果是失效掉了a[1]=1;最后求解结果为2;
第三次求解:需要第二次求解的结果,第二次求解结果为2,按比特展开就是00000010。随机结果是对第3比特和第4比特进行翻转,这是翻转结果是00001110,这时第3比特和第4比特的翻转的约束都是后a<=2冲突的,也就是随机化的约束都失效了,这个时候就需要和1一样重新初始化每一比特的约束。
依次进行后面的求解,过程同上。
按照上述随机属性的方式生成带约束的随机数,能够在保证随机性的前提下,很大程度上提升效率。
将上述设定约束的方式命名为方式A,后面将对比如下两种输入随机属性约束的方式:
每次输入的都是每一比特位等于随机值的约束,令这种方式为方式B;
第一次输入每一比特位等于随机值的约束,后面每次求解输入翻转上一次求解结果的随机若干比特的约束,但是如果这些随机约束都没有生效(和优先级更高的约束发生冲突),不会进行修正,令这种方式为方式C;
相对于方式B,每次输入的表达随机的约束更少,而这些约束又是相互独立的,所以可以提升求解引擎求解的效率;相对于方式C,有效的避免了在解空间很小的情况下,表达随机的约束都失效的情况。
实施例3
本发明实施例还提供了一种电子设备,包括存储器和处理器,存储器上储存有在处理器上运行的程序,处理器运行所述程序时执行上述基于约束求解引擎的带约束随机数生成方法的步骤。
实施例4
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述的基于约束求解引擎的带约束随机数生成方法的步骤,所述基于约束求解引擎的带约束随机数生成方法参见前述部分的介绍,不再赘述。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于约束求解引擎的带约束随机数生成方法,包括以下步骤:
1)编译用户在EDA数字仿真器中输入的仿真代码,获取随机变量、约束、求解次数,其中,所述求解次数记作N;
2)对所述随机变量进行比特提取,将提取的随机变量的每一个比特作为独立的随机变量;
3)利用表达随机的约束,生成随机属性约束:
对于第一次求解,利用随机函数为随机变量每一个比特随机生成0或1的值,获得随机属性约束;
对于第2次到第N次求解,对上一次的求解结果,随机选择选定个数的比特,进行比特值的翻转,获得随机属性约束,所述翻转,是指将0翻转成1或者将1翻转成0;
其中,在第2次到第N次求解之前,先清除上一次求解设定的表达随机属性的所有约束;
4)将所有约束送入约束求解引擎进行求解。
2.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述约束,包括,硬约束和软约束,所述硬约束为用户设置的必须要满足的约束,所述软约束包括,用户特指的不需要必须满足的约束或根据待求解变量设置的按比特表达随机的约束。
3.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述步骤2)还包括,将用户输入的约束的代数形式转换为数理逻辑中的合取范式的形式。
4.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述步骤3)对于第2至第N次求解,还包括,在求解之前先清除上一次求解设定的表达随机属性的所有约束。
5.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述选定个数等于所述随机变量长度/固定值,所述固定值根据约束求解引擎进行选择。
6.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述步骤4)进一步包括,对于第一次进行约束求解获得的随机属性的软约束,约束求解引擎将其与用户输入的硬约束进行求解,在求解过程中进行冲突判断:
如果不冲突,则输出求解结果;
如果冲突,则求解失败,退出求解。
7.根据权利要求1所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,所述步骤4)进一步包括,对于第2至第N次约束求解,约束求解引擎将判断是否所有表达随机的约束都失效了:
如果失效了,则清空所有表达随机的约束,按照第1次约束求解情况进行操作;
如果并非所有表达随机的约束都失效了,则输出求解结果。
8.根据权利要求6或7中任一项所述的基于约束求解引擎的带约束随机数生成方法,其特征在于,输出求解结果之后,需要判断是否为最后一次求解:
如果不是最后一次求解,则继续进行所述步骤3)-所述步骤4);
如果是最后一次求解,则求解结束;
其中,最后一次求解的次数等于N。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上储存有在所述处理器上运行的程序,所述处理器运行所述程序时执行权利要求1-8任一项所述的基于约束求解引擎的带约束随机数生成方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述计算机指令运行时执行权利要求1-8任一项所述的基于约束求解引擎的带约束随机数生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211113560.9A CN115392048A (zh) | 2022-09-14 | 2022-09-14 | 一种基于约束求解引擎的带约束随机数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211113560.9A CN115392048A (zh) | 2022-09-14 | 2022-09-14 | 一种基于约束求解引擎的带约束随机数生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115392048A true CN115392048A (zh) | 2022-11-25 |
Family
ID=84125657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211113560.9A Pending CN115392048A (zh) | 2022-09-14 | 2022-09-14 | 一种基于约束求解引擎的带约束随机数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115392048A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116933142A (zh) * | 2023-09-15 | 2023-10-24 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
-
2022
- 2022-09-14 CN CN202211113560.9A patent/CN115392048A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116933142A (zh) * | 2023-09-15 | 2023-10-24 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
CN116933142B (zh) * | 2023-09-15 | 2023-12-19 | 北京云枢创新软件技术有限公司 | 一种生成随机激励的约束分类方法、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Baier et al. | Model checking Markov chains with actions and state labels | |
Heule et al. | Proofs for satisfiability problems | |
CN112257366B (zh) | 一种用于等价性验证的cnf生成方法及系统 | |
JP5344774B2 (ja) | テスト配列の誤り訂正方法、対応するシステム及び遺伝子のアセンブリ装置 | |
CN115392048A (zh) | 一种基于约束求解引擎的带约束随机数生成方法 | |
US5491639A (en) | Procedure for verifying data-processing systems | |
CN111639470B (zh) | 一种处理器协同芯片的仿真测试方法、系统及相关组件 | |
CN112199214B (zh) | 一种gpu上的候选口令生成及应用破解方法 | |
CN114239536A (zh) | 一种事件抽取方法、系统及计算机可读存储介质 | |
CN113760358A (zh) | 一种面向源代码分类模型的对抗样本生成方法 | |
CN111159631B (zh) | 一种基于可编程逻辑的硬件sat求解器 | |
CN111222022B (zh) | 一种基于正则表达式的匹配方法及装置 | |
Rebola-Pardo et al. | Two flavors of DRAT. | |
CN109144806B (zh) | 一种寄存器传输级电路的功能验证方法及装置 | |
Camarinopoulos et al. | An improved top-down algorithm combined with modularization as a highly efficient method for fault tree analysis | |
CN111190768B (zh) | 数据库执行错误恢复方法、数据库访问方法及装置 | |
CN117436391B (zh) | 一种用于算法和硬件联合仿真的方法 | |
CN115358175B (zh) | 电路形式化模型简化方法及系统 | |
Ciardo et al. | P-semiflow computation with decision diagrams | |
CN112649723B (zh) | 转换延迟故障测试压缩环境下测试精简方法和装置 | |
CN116362057B (zh) | 随机验证方法、装置、电子设备及存储介质 | |
CN115658730B (zh) | 稀疏数据的查询方法、装置、设备和计算机可读存储介质 | |
Abdulla et al. | Minimization of non-deterministic automata with large alphabets | |
WO2024078096A1 (zh) | 针对网络流问题的处理方法和装置 | |
CN115357430A (zh) | 一种节点镜像优化方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |