CN116911219A - 用于逻辑系统设计的仿真的方法、电子设备和存储介质 - Google Patents
用于逻辑系统设计的仿真的方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN116911219A CN116911219A CN202310601280.0A CN202310601280A CN116911219A CN 116911219 A CN116911219 A CN 116911219A CN 202310601280 A CN202310601280 A CN 202310601280A CN 116911219 A CN116911219 A CN 116911219A
- Authority
- CN
- China
- Prior art keywords
- values
- variables
- boolean
- constraint
- combinations
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013461 design Methods 0.000 title claims abstract description 47
- 238000004088 simulation Methods 0.000 title claims abstract description 45
- 238000003860 storage Methods 0.000 title claims abstract description 10
- 230000014509 gene expression Effects 0.000 claims abstract description 21
- 238000004590 computer program Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 239000000306 component Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008094 contradictory effect Effects 0.000 description 2
- 241000543370 Galax Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02E—REDUCTION OF GREENHOUSE GAS [GHG] EMISSIONS, RELATED TO ENERGY GENERATION, TRANSMISSION OR DISTRIBUTION
- Y02E60/00—Enabling technologies; Technologies with a potential or indirect contribution to GHG emissions mitigation
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)
Abstract
本申请提供一种用于逻辑系统设计的仿真的方法、电子设备和存储介质,方法包括:获取用于逻辑系统设计的仿真的约束条件,所述约束条件包括由多个原始变量构成的多个表达式;根据所述约束条件确定所述约束条件的命题骨架,其中,所述多个表达式分别用多个布尔变量替代;求解满足所述命题骨架的所述多个布尔变量的值的多个组合;以及基于所述多个组合分别求解满足所述约束条件的多个原始变量的值,采用本方法能够满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。
Description
技术领域
本申请涉及计算机软件技术领域,尤其涉及一种用于逻辑系统设计的仿真的方法、电子设备和存储介质。
背景技术
功能验证是EDA流程中一个不可或缺的环节。在基于仿真测试的功能验证方法中,约束条件求解器用于产生一系列满足功能验证需求的随机激励,成为了主流商业数字仿真工具的核心组件之一。并且随着芯片设计复杂度的急剧增加,一个能够高效处理大规模复杂约束、且解具有较好随机分布的约束条件求解器被认为是突破大规模验证瓶颈、缩短验证周期的有效工具。
然而,目前的约束条件求解器缺乏逻辑推理能力,求解存在操作符的约束的能力较差,不能够满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。
发明内容
本申请的第一方面提供一种用于逻辑系统设计的仿真的方法,所述方法包括:获取用于逻辑系统设计的仿真的约束条件,所述约束条件包括由多个原始变量构成的多个表达式;
根据所述约束条件确定所述约束条件的命题骨架,其中,所述多个表达式分别用多个布尔变量替代;
求解满足所述命题骨架的所述多个布尔变量的值的多个组合;以及
基于所述多个组合分别求解满足所述约束条件的多个原始变量的值。
本申请的第二方面提供一种电子设备,包括:存储器,用于存储一组指令;以及至少一个处理器,配置为执行所述一组指令以使得所述电子设备执行如第一方面所述的方法。
本申请的第三方面提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使所述计算机执行如第一方面所述的方法。
本申请提供的一种用于逻辑系统设计的仿真的方法,通过将约束条件中的由多个原始变量构成的多个表达式使用布尔变量替代。然后求解满足所述命题骨架的所述多个布尔变量的值的多个组合。能够消除位向量对约束条件中造成的影响。进而,基于所述多个组合分别求解满足所述约束条件的多个原始变量的值。可以将求解约束条件的过程区分为两个阶段,即求解命题骨架和利用满足命题骨架的解求解约束条件的过程。由于目前的约束条件求解器缺乏逻辑推理能力,求解存在操作符的约束的能力较差。因此,可以将求解存在操作符的过程进行单独拆分,能够提高约束求解的效率,并且可以满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请实施例的示例性电子设备的结构示意图。
图2A示出了根据本申请实施例的示例性仿真系统的示意图;
图2B示出了根据本申请实施例的示例性编译器的示意图;
图3示出了根据本申请实施例的作为示例地约束条件的示意图;
图4示出了根据本申请实施例的作为示例地命题骨架的示意图;
图5示出了根据本申请实施例的示例性一种用于逻辑系统设计的仿真的方法的流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
随着计算机技术的发展,电子设计自动化(electronic design automation,EDA)工具、需求分析、程序验证、代码安全性度量及安全分析等相关领域中,约束条件求解器被广泛应用。
当前存在三种类型的约束条件求解器用于对仿真测试时涉及到的约束条件进行求解,包括:BDD求解器、字级求解器和SAT求解器。其中,BDD求解器由于公认的内存爆炸问题,已无法适应求解大规模约束条件。由于字级求解器具有易于实现、天然随机性的优势,已被成功应用于商业数字仿真器,但是由于缺乏逻辑推理能力,字级求解器在求解包含诸如if-then-else(ITE)、逻辑or等操作符的约束条件时性能较差。而SAT求解器非常擅长于逻辑推理,但是解的随机性一般,且求解数学运算时性能明显弱于字级求解器。因此,目前亟需一种能够在逻辑系统设计的仿真的过程中求解约束条件时能够求解存在操作符的约束条件,并具有较强逻辑推理能力对用于逻辑系统设计的仿真的约束条件求解的方法。
通过将约束条件中的由多个原始变量构成的多个表达式使用布尔变量替代。然后求解满足所述命题骨架的所述多个布尔变量的值的多个组合。能够消除位向量对约束条件中造成的影响。进而,基于所述多个组合分别求解满足所述约束条件的多个原始变量的值。可以将求解约束条件的过程区分为两个阶段,即求解命题骨架和利用满足命题骨架的解求解约束条件的过程。由于目前的约束条件求解器缺乏逻辑推理能力,求解存在操作符的约束的能力较差。因此,可以将求解存在操作符的过程进行单独拆分,能够提高约束求解的效率,并且可以满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。
图1示出了根据本申请实施例的电子设备100的结构示意图。电子设备100可以是运行仿真系统的电子设备。如图1所示,电子设备100可以包括:处理器102、存储器104、网络接口106、外围接口108和总线110。其中,处理器102、存储器104、网络接口106和外围接口108通过总线110实现彼此之间在电子设备内部的通信连接。
处理器102可以是中央处理器(Central Processing Unit,CPU)、图像处理器、神经网络处理器(NPU)、微控制器(MCU)、可编程逻辑器件、数字信号处理器(DSP)、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路。处理器102可以用于执行与本申请描述的技术相关的功能。在一些实施例中,处理器102还可以包括集成为单一逻辑组件的多个处理器。如图1所示,处理器102可以包括多个处理器102a、102b和102c。
存储器104可以配置为存储数据(例如,指令集、计算机代码、中间数据等)。在一些实施例中,用于仿真测试设计的仿真测试系统可以是存储器104中存储的计算机程序。如图1所示,存储器存储的数据可以包括程序指令(例如,用于实现本申请的用于逻辑系统设计的仿真的方法的程序指令)以及要处理的数据(例如,存储器可以存储在编译过程产生的临时代码)。处理器102也可以访问存储器存储的程序指令和数据,并且执行程序指令以对要处理的数据进行操作。存储器104可以包括易失性存储装置或非易失性存储装置。在一些实施例中,存储器104可以包括随机访问存储器(RAM)、只读存储器(ROM)、光盘、磁盘、硬盘、固态硬盘(SSD)、闪存、存储棒等。
网络接口106可以配置为经由网络向电子设备100提供与其他外部设备的通信。该网络可以是能够传输和接收数据的任何有线或无线的网络。例如,该网络可以是有线网络、本地无线网络(例如,蓝牙、WiFi、近场通信(NFC)等)、蜂窝网络、因特网、或上述的组合。可以理解的是,网络的类型不限于上述具体示例。在一些实施例中,网络接口106可以包括任意数量的网络接口控制器(NIC)、射频模块、接收发器、调制解调器、路由器、网关、适配器、蜂窝网络芯片等的任意组合。
外围接口108可以配置为将电子设备100与一个或多个外围装置连接,以实现信息输入及输出。例如,外围装置可以包括键盘、鼠标、触摸板、触摸屏、麦克风、各类传感器等输入设备以及显示器、扬声器、振动器、指示灯等输出设备。
总线110可以被配置为在电子设备100的各个组件(例如处理器102、存储器104、网络接口106和外围接口108)之间传输信息,诸如内部总线(例如,处理器-存储器总线)、外部总线(USB端口、PCI-E总线)等。
需要说明的是,尽管上述电子设备架构仅示出了处理器102、存储器104、网络接口106、外围接口108和总线110,但是在具体实施过程中,该电子设备架构还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述电子设备架构中也可以仅包含实现本申请实施例方案所必需的组件,而不必包含图中所示的全部组件。
图2A示出了根据本公开实施例的示例性仿真工具200的示意图。仿真工具200可以是运行在电子设备100上的计算机程序。
在芯片设计领域,通常可以利用仿真工具对一个设计进行仿真。仿真工具例如可以是芯华章科技股份有限公司出品的GalaxSim仿真工具。图2A示出的示例性仿真工具200可以包括编译器210和仿真器220。编译器210可以接收源代码204(例如,VHDL、Verilog、SystemVerilog等硬件描述语言),并编译为执行代码206(例如,机器码、汇编代码、软件代码等)。可以理解的是,逻辑系统设计的描述可以是以硬件描述语言(HDL)、寄存器传输级(Register Transfer Level,RTL)语言、二进制代码、汇编代码、或机器码等描述的。仿真器220可以根据执行代码206进行仿真,并将仿真结果208输出。例如,仿真工具200可以将仿真结果208经由图1的外围接口108输出到输出设备上(例如,显示在显示器上)。
图2B为本申请实施例的示例性编译器210的示意图。如图2B所示,编译器210可以包括前端212、中端214以及后端216。
前端212可以用于根据具体的源语言来分析源代码的词法、语法、语义。
在源代码的词法、语法、语义分析完成后,中端214可以将源代码转换为中间表示(或中间代码),并可以优化该中间表示。中间语言(中间代码)是一种面向语法,是易于翻译成目标程序的源代码的等效内部表示代码。其可理解性及易于生成执行代码的程度介于源代码和执行代码之间。常用的中间代码有逆波兰表示、四元式、三元式和树表示等。例如,中端214可以移除无用的代码、移除不可访问的代码、清除未使用的变量等。优化可以包括机器相关的优化和机器无关的优化。其中,机器相关的优化,例如,可以是对测试平台(Testbench,TB)的优化,并可以利用一些测试平台的特性来帮助优化。机器无关的优化,例如,可以是待测设计(Design Under Test,DUT)的优化。优化后的中间表示则可以被传递给后端126进行进一步处理。
后端216可以根据目标处理器(例如,图1的处理器102)的架构来进一步优化中间表示,并生成执行代码。通常,执行代码是机器码。
可以理解的是,编译器的结构不限于图2B的示例。例如,前端212和中端214可以被合称为编译器的前端。
编译器210可以基于待编译的计算机代码来生成执行代码。待编译的计算机代码又可以称为源代码,例如编写的逻辑系统设计。通常,编写源代码的源语言是高级编程语言。高级编程语言可以是上述软件编程语言或硬件编程语言。执行代码则可以是例如汇编代码、机器码等。通常的,编译器210可以存储在图1所示的存储器104中,并且由处理器102执行,以将逻辑系统设计编译为执行代码。编译器210可以将逻辑系统设计的描述从高级语言描述(例如,HDL语言)转换为更低级的描述(例如,RTL语言或二进制代码),从而使得底层硬件可以运行逻辑系统设计。
约束条件求解器可以是编译器210的一部分。编译器210可以编译在测试平台中描述的约束条件,并且在执行过程中产生符合该约束条件的随机激励。
如上所述,目前的约束条件求解器缺乏逻辑推理能力,求解存在操作符的约束的能力较差,不能够满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。针对上述问题,本申请提出一种用于逻辑系统设计的仿真的方法。
本申请在下文以如下的约束条件为例进行说明。
if(a>b){
a==5;
b==1;
}else{
a==1;
b==5;
}
可以理解的是,上述约束条件仅仅是示例,本申请实施例的方法可以应用于其他约束条件。
在用户需要对逻辑系统设计进行仿真时,通常需要对逻辑系统设计的仿真的约束条件进行求解。
在一些实施例中,用于逻辑系统设计的仿真的约束条件中可以包括逻辑运算符、比较运算符、原始变量和变量值。其中,逻辑运算符可以为if-then-else(ITE)、逻辑or、&&等。比较运算符可以为>、<、>=、<=、==等。原始变量通常可以是需要求值的量,变量值通常可以是原始变量的值。例如a=5,其中a可以为原始变量,5可以为变量值。利用原始变量、比较运算符和变量值可以构成不同的类型的多个表达式。当用户需要对逻辑系统设计的仿真的约束条件进行求解时,通常可以获取用于逻辑系统设计的仿真的约束条件。约束条件中可以包括由多个原始变量构成的多个表达式。
相应的,图3示出了根据本申请实施例的作为示例地约束条件300的示意图。如图3所示,以上示例性约束条件可以转换为图3所示的结构,并且可以包括原始变量a(322)和原始变量b(324)、逻辑运算符ITE(342)、逻辑运算符&&(344)、逻辑运算符&&(346)、比较运算符>(362)、比较运算符==(364)、比较运算符==(366)、比较运算符==(367)、比较运算符==(368)、变量值5(382)和变量值1(384)。图3中约束条件300的表达式可以包括:a>b、a==5、a==1、b==5、b==1。
当获取约束条件(例如,图3中的约束条件300)后,可以将约束条件中的多个表达式分别用多个布尔变量替代,得到约束条件的命题骨架。
图4示出了根据本申请实施例的作为示例地命题骨架400的示意图。例如,可以将图3中的由原始变量(如图3中的原始变量a(322)和原始变量b(324))、比较运算符(如图3中的比较运算符>(362)、比较运算符==(364)、比较运算符==(366)、比较运算符==(367)、比较运算符==(368))和变量值(如图3中的变量值5(382)和变量值1(384))构成的表达式,如:a>b、a==5、a==1、b==5、b==1,进行替换为布尔变量。因此,可以将a>b替换为布尔变量_b1(402)、a==5替换为布尔变量_b2(404)、a==1替换为布尔变量_b3(406)、b==5替换为布尔变量_b4(408)、b==1替换为布尔变量_b5(410),得到命题骨架400。
当得到了命题骨架之后,可以求解满足命题骨架的多个布尔变量的值的多个组合。在一些实施例中,可以使用第一求解器求解满足命题骨架的至少一组布尔变量的值。由于命题骨架是将表达式替换为了布尔变量,即命题骨架中不存在表达式,但是命题骨架中存在逻辑运算符,由于存在逻辑运算符,不存在表达式,因此不存在数学方面的表达式运算,而SAT求解器非常擅长于逻辑推理,因此可以使用SAT求解器作为第一求解器求解满足命题骨架的至少一组布尔变量的值,进而得到多个组合。
这样,利用第一求解器求解满足命题骨架布尔变量的值的多个组合。由于命题骨架中存在逻辑运算符,因此第一求解器可以使用SAT求解器,进而在求解存在逻辑运算符的命题骨架时,能够提高求解速度和提升求解结果的准确性。
然后,可以基于多个组合分别求解满足所述约束条件的多个原始变量的值。可以将多个组合对应的布尔变量的值代入约束条件中,来求解满足约束条件的原始变量的值。在一些实施例中,由于布尔变量的值通常情况下为0或者为1。因此,当布尔变量的值确定为0的情况下,可以确定其所对应的表达式需要被满足。而当布尔变量的值确定为1的情况下,可以确定其多对应的表达式的逆命题需要被满足。作为示例,请参照图3和图4,例如布尔变量_b1(402)取1,则表示需要满足a>b。布尔变量_b1(402)取0,则表示需要满足!(a>b)。
在一些实施例中,求解原始变量的值的过程中,可以在多个组合中选取第一组的布尔变量的值,然后使用第二求解器根据第一组中多个布尔变量的值来确定满足约束条件的多个原始变量的解。由于已经使用第一求解器对存在逻辑运算符的命题骨架进行了求解。因此,在求解原始变量时,已经不存在了逻辑运算符的影响因素,因此可以使用字级求解器(word-level求解器)作为第二求解器,并利用第二求解器根据第一组中多个布尔变量的值确定满足约束条件的多个原始变量的值。另外,若选择的第一组中的布尔变量的值无法满足约束条件,则可以在多个组合中选取第二组的多个布尔变量的值,直至满足约束条件,并确定原始变量的值。在将所有的组合中布尔变量的值都选取完成后,还是未确定原始变量的值,则可以确定用于逻辑系统设计的仿真的约束条件无解。
这样,在基于多个组合求解满足约束条件的原始变量的过程中,由于在上述实施例中已经使用了SAT求解器进行了处理,消除了逻辑运算符的影响因此,因此此处可以使用第二求解器(例如,字级求解器)进行求解,能够提高求解约束条件的效率。
作为示例,继续以图3和图4为例进行说明。例如,布尔变量_b1(402)至布尔变量_b5(410)都取1,满足命题骨架400,命题骨架400的条件成立,但是布尔变量(如图4中的布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))取值所代表的约束条件300无法被满足,因为a==5与a==1要同时成立,b==1与b==5也要同时成立,因此选择另一组组合中的布尔变量(如图4中的布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))的值,直至取完所有组合中的布尔变量(如图4中的,布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))的值来求得一组满足约束条件300的原始变量(如图3中的a(322)和b(324))的值,即得到了约束条件300的解。如果取完所有的布尔变量的值仍无法得到一组满足约束条件300的原始变量(如图3中的a(322)和b(324))的值,则确定约束条件300无解。
这样,依次从多个组合中选取布尔变量的值,进而进行求解,能够准确的得到约束条件的值,而当将所有组合中布尔变量的值获取完毕后,还未求出满足约束条件的原始变量,则可以确定该约束条件无解,能够提高求解约束条件的准确率。
在一些实施例中,当确定满足约束条件的原始变量的值后,可以将原始变量的值施加到逻辑系统设计中,进而对逻辑系统设计进行仿真。
在一些实施例中,为了提高逻辑系统设计的仿真的效率,可以在求解满足命题骨架的多个布尔变量的值的多个组合后。对每个组合中的布尔变量的值进行筛选,删除布尔变量的值存在矛盾的组合。
作为示例,例如存在三个组合,分别为组合A、组合B和组合C,其中组合A中的布尔变量的值为0、0和1,代表a>0需要被满足,a=1需要被满足和!(a=0)需要被满足,此时组合A中的布尔变量可以满足条件,不存在矛盾。组合B中的布尔变量的值为1、0和0,代表!(a>0)需要被满足,a=1需要被满足和a=0需要被满足,则a=0和a=1,存在矛盾,a不可能既等于0又等于1,因此组合B存在明显的无法被满足的布尔变量的取值,将组合B删除。组合C中布尔变量的值可以为1、1和0,代表!(a>0)需要被满足,!(a=1)需要被满足和a=0需要被满足,此时组合C中的布尔变量可以满足条件,不存在矛盾。
这样,通过多组合中布尔变量的值进行筛选,删除布尔变量的值存在矛盾的组合,能够更进一步的提高求解约束条件的效率。
图5示出了根据本申请实施例的示例性一种用于逻辑系统设计的仿真的方法500的流程图。方法500可由图1所示的电子设备100实施,更具体地,由在电子设备100上运行的编译器/仿真系统(例如,图2A或图2B中的编译器210/图2A中的仿真系统)实施。方法500可以包括如下步骤。
在步骤502,获取用于逻辑系统设计的仿真的约束条件(如图3中的300),所述约束条件包括由多个原始变量(如图3中的原始变量a(322)和原始变量b(324))构成的多个表达式(图3中的原始变量a(322)、原始变量b(324)、逻辑运算符ITE(342)、逻辑运算符&&(344)、逻辑运算符&&(346)、比较运算符>(362)、比较运算符==(364)、比较运算符==(366)、比较运算符==(367)、比较运算符==(368)、变量值5(382)和变量值1(384)构成的表达式:a>b、a==5、a==1、b==5、b==1)。
在步骤504,根据所述约束条件确定所述约束条件的命题骨架(例如,图4中的400),其中,所述多个表达式分别用多个布尔变量(例如,图4中的布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))替代。
在步骤506,求解满足所述命题骨架(例如,图4中的400)的所述多个布尔变量(例如,图4中的布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))的值的多个组合。
在一些实施例中,所述求解满足所述命题骨架的所述多个布尔变量的值进一步包括:使用第一求解器求解满足所述命题骨架的至少一组布尔变量的值。所述第一求解器是SAT求解器。
在一些实施例中,所述方法进一步包括:删除所述多个组合中布尔变量(例如,图4中的布尔变量_b1(402)、布尔变量_b2(404)、布尔变量_b3(406)、布尔变量_b4(408)、布尔变量_b5(410))的值存在矛盾的组合。
在步骤508,基于所述多个组合分别求解满足所述约束条件(例如,图3中的300)的多个原始变量(例如,图3中的原始变量a(322)和原始变量b(324))的值。
在一些实施例中,基于所述多个组合分别求解满足所述约束条件的多个原始变量的值进一步包括:在所述多个组合中选取第一组所述多个布尔变量的值;使用第二求解器根据所述多个布尔变量的值确定满足所述约束条件的多个原始变量的值。所述第二求解器是字级求解器。
在一些实施例中,根据所述多个布尔变量的值确定满足所述约束条件的多个原始变量的值进一步包括:响应于第一组所述多个布尔变量的值无法满足所述约束条件;在所述多个组合中选取第二组所述多个布尔变量的值。
在一些实施例中,所述方法进一步包括:施加所述多个原始变量的值到所述逻辑系统设计。
这样,通过将约束条件中的由多个原始变量构成的多个表达式使用布尔变量替代。然后求解满足所述命题骨架的所述多个布尔变量的值的多个组合。能够消除位向量对约束条件中造成的影响。进而,基于所述多个组合分别求解满足所述约束条件的多个原始变量的值。可以将求解约束条件的过程区分为两个阶段,即求解命题骨架和利用满足命题骨架的解求解约束条件的过程。由于目前的约束条件求解器缺乏逻辑推理能力,求解存在操作符的约束的能力较差。因此,可以将求解存在操作符的过程进行单独拆分,能够提高约束求解的效率,并且可以满足目前的用于逻辑系统设计的仿真的约束条件的求解需求。
本申请实施例还提供一种电子设备。该电子设备可以是图1的电子设备100。该电子设备100可以包括存储器,用于存储一组指令;以及至少一个处理器,配置为执行该组指令以使得所述电子设备执行方法500。
本申请实施例还提供一种非暂态计算机可读存储介质。该非暂态计算机可读存储介质存储计算机的一组指令,该组指令用于在被执行时使该电子设备执行方法500。
上述对本申请的一些实施例进行了描述。其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明它们没有在细节中提供。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种用于逻辑系统设计的仿真的方法,其特征在于,所述方法包括:
获取用于逻辑系统设计的仿真的约束条件,所述约束条件包括由多个原始变量构成的多个表达式;
根据所述约束条件确定所述约束条件的命题骨架,其中,所述多个表达式分别用多个布尔变量替代;
求解满足所述命题骨架的所述多个布尔变量的值的多个组合;以及
基于所述多个组合分别求解满足所述约束条件的多个原始变量的值。
2.根据权利要求1所述的方法,其特征在于,所述求解满足所述命题骨架的所述多个布尔变量的值进一步包括:
使用第一求解器求解满足所述命题骨架的至少一组布尔变量的值。
3.根据权利要求1所述的方法,其特征在于,所述第一求解器是SAT求解器。
4.根据权利要求1所述的方法,其特征在于,基于所述多个组合分别求解满足所述约束条件的多个原始变量的值进一步包括:
在所述多个组合中选取第一组所述多个布尔变量的值;
使用第二求解器根据所述多个布尔变量的值确定满足所述约束条件的多个原始变量的值。
5.根据权利要求4所述的方法,其特征在于,所述第二求解器是字级求解器。
6.根据权利要求4所述的方法,其特征在于,根据所述多个布尔变量的值确定满足所述约束条件的多个原始变量的值进一步包括:
响应于第一组所述多个布尔变量的值无法满足所述约束条件;
在所述多个组合中选取第二组所述多个布尔变量的值。
7.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
施加所述多个原始变量的值到所述逻辑系统设计。
8.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
删除所述多个组合中布尔变量的值存在矛盾的组合。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可由所述处理器执行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一项所述的方法。
10.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使计算机执行根据权利要求1至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310601280.0A CN116911219A (zh) | 2023-05-25 | 2023-05-25 | 用于逻辑系统设计的仿真的方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310601280.0A CN116911219A (zh) | 2023-05-25 | 2023-05-25 | 用于逻辑系统设计的仿真的方法、电子设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116911219A true CN116911219A (zh) | 2023-10-20 |
Family
ID=88351788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310601280.0A Pending CN116911219A (zh) | 2023-05-25 | 2023-05-25 | 用于逻辑系统设计的仿真的方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116911219A (zh) |
-
2023
- 2023-05-25 CN CN202310601280.0A patent/CN116911219A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7865346B2 (en) | Instruction encoding in a hardware simulation accelerator | |
CN116663467B (zh) | 断言等效硬件库的构建方法、装置、电子设备及存储介质 | |
CN115422866A (zh) | 用于在仿真器上仿真逻辑系统设计的方法及相关设备 | |
US9619598B2 (en) | Input space reduction for verification test set generation | |
JP2006139729A (ja) | ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体 | |
CN114548027A (zh) | 在验证系统中追踪信号的方法、电子设备及存储介质 | |
CN117910398A (zh) | 仿真逻辑系统设计的方法、电子装置和存储介质 | |
Jiang et al. | PyH2: Using PyMTL3 to create productive and open-source hardware testing methodologies | |
US7257786B1 (en) | Method and apparatus for solving constraints | |
US9135376B2 (en) | Input space reduction for verification test set generation | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN115809620B (zh) | 仿真逻辑系统设计的方法、电子设备和存储介质 | |
CN115828805A (zh) | 分割逻辑系统设计的方法、设备及存储介质 | |
CN114328062B (zh) | 校验缓存一致性的方法、装置和存储介质 | |
CN117931156A (zh) | 执行脚本命令的方法、设备及存储介质 | |
CN116911219A (zh) | 用于逻辑系统设计的仿真的方法、电子设备和存储介质 | |
US11074381B2 (en) | Verification of hardware design for data transformation component | |
JPH1091677A (ja) | シミュレーション/エミュレーションの効率を増すための論理変換方法 | |
US20240241809A1 (en) | Methods, electronic devices and storage media for executing assertions | |
CN118364756A (zh) | 验证系统、验证方法、电子设备和存储介质 | |
CN116861829B (zh) | 用于定位逻辑系统设计中错误的方法、电子设备 | |
CN114169287B (zh) | 生成验证环境的连接示意图的方法、电子设备及存储介质 | |
CN117172168A (zh) | 在仿真中实现回调的方法、电子设备和存储介质 | |
CN117370168B (zh) | 设置逻辑系统设计的仿真还原点的方法及相关设备 | |
CN114168142A (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 |