CN112257362A - 逻辑代码的验证方法、验证装置以及存储介质 - Google Patents
逻辑代码的验证方法、验证装置以及存储介质 Download PDFInfo
- Publication number
- CN112257362A CN112257362A CN202011162179.2A CN202011162179A CN112257362A CN 112257362 A CN112257362 A CN 112257362A CN 202011162179 A CN202011162179 A CN 202011162179A CN 112257362 A CN112257362 A CN 112257362A
- Authority
- CN
- China
- Prior art keywords
- simulation
- logic
- analysis result
- logic modules
- configuration file
- 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.)
- Granted
Links
Images
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/3308—Design verification, e.g. functional simulation or model checking using simulation
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)
- Design And Manufacture Of Integrated Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
一种逻辑代码的验证方法、验证装置以及存储介质。该逻辑代码包括M个逻辑模块,该验证方法包括:对该M个逻辑模块进行第一仿真得到仿真分析结果;根据该仿真分析结果,在该M个逻辑模块中选择符合预设条件的N个逻辑模块,并将该N个逻辑模块分别分配给N个处理器进行第二仿真,M、N均为正整数并且M大于N。该验证方法可以有效利用处理器资源进行并行验证,从而缩短验证时长。
Description
技术领域
本公开的实施例涉及一种逻辑代码的验证方法、验证装置以及存储介质。
背景技术
在集成电路的设计中,需要用硬件描述语言将硬件电路形成为逻辑代码,使用验证工具对逻辑代码进行仿真验证后再通过综合工具将逻辑代码转换为门级电路网表,然后再使用自动布局布线工具将网表转换为要实现的具体电路布线结构。随着集成电路技术的不断发展,芯片的规模和复杂度在不断提升,验证时间也越来越长,如何提高验证效率、缩短验证时长是本领域关注的问题。
发明内容
本公开至少一实施例提供一种逻辑代码的验证方法,所述逻辑代码包括M个逻辑模块,所述验证方法包括:对所述M个逻辑模块进行第一仿真得到仿真分析结果;根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,其中,M、N均为正整数并且M大于N。
在一些示例中,所述预设条件包括:所述N个逻辑模块中的每个所消耗的仿真时间在所述逻辑代码的总仿真时间的占比大于预设占比值。
在一些示例中,所述预设条件还包括:所述N个逻辑模块位于同一层级。
在一些示例中,对所述M个逻辑模块进行第一仿真得到仿真分析结果包括:通过验证平台对所述逻辑代码进行所述第一仿真,当所述第一仿真通过时生成所述仿真分析结果。
在一些示例中,所述验证平台包括驱动组件、预期组件、检测组件和比对组件;通过所述验证平台对所述逻辑代码进行所述第一仿真包括:通过所述驱动组件分别将测试用例输入到所述预期组件和所述逻辑代码中,通过所述检测组件检测所述逻辑代码的输出信号并将所述输出信号输入至所述比对组件,以及通过所述比对组件将所述逻辑代码的输出信号与所述预期组件的输出进行比对分析所述逻辑代码的输出信号是否正确,当所述逻辑代码的输出信号正确时所述第一仿真通过。
在一些示例中,所述第一仿真包括初步仿真和深度仿真,当所述深度仿真通过时生成所述仿真分析结果。
在一些示例中,根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,包括:根据所述仿真分析结果和所述预设条件生成配置文件,其中,所述配置文件示出了所述N个逻辑模块的信息;根据所述配置文件将所述N个逻辑模块分别分配给所述N个处理器进行所述第二仿真。
在一些示例中,根据所述仿真分析结果和所述预设条件生成配置文件包括:根据所述预设条件对所述仿真分析结果进行可行性分析,当所述可行性分析的结果表明可行时根据所述仿真分析结果生成配置文件。
在一些示例中,所述验证方法还包括:当所述第二仿真所消耗的仿真时间超过预设值时,修改所述配置文件,并根据修改后的配置文件对所述逻辑代码进行第三仿真。
本公开至少一实施例还提供一种逻辑代码的验证装置,适用上述验证方法,包括所述N个处理器和存储器。所述存储器中存储有计算机可执行代码,所述计算机可执行代码当由所述处理器运行时,执行上述验证方法。
本公开至少一实施例还提供一种计算机可读存储介质,其上存储有计算机可执行代码,所述计算机可执行代码在被处理器执行时,使得所述处理器执行上述验证方法。
本公开至少一实施例还提供一种逻辑代码的验证装置,所述逻辑代码包括M个逻辑模块,所述验证装置包括仿真分析单元以及选择和分配单元。所述仿真分析单元配置为对所述M个逻辑模块进行第一仿真得到仿真分析结果;所述选择和分配单元配置为根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,其中,M、N均为正整数并且M大于N。
在一些示例中,所述选择和分配单元包括配置文件生成单元和分配单元,所述配置文件生成单元配置为根据所述仿真分析结果和所述预设条件生成配置文件,所述配置文件示出了所述N个逻辑模块的信息;所述分配单元配置为根据所述配置文件将所述N个逻辑模块分别分配给所述N个处理器进行所述第二仿真。
在一些示例中,所述配置文件生成单元包括可行性分析单元,所述可行性分析单元配置为根据所述预设条件对所述仿真分析结果进行可行性分析,以及当所述可行性分析的结果表明可行时根据所述仿真分析结果生成所述配置文件。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为一种逻辑代码的验证环境示意图;
图1B为一种验证平台的框图;
图1C为一种验证方法的流程示意图;
图2A为本公开至少一实施例提供的一种验证方法的步骤图;
图2B为本公开至少一实施例提供的一种验证方法中处理器的分配示意图;
图3A为本公开至少一实施例提供的验证方法的流程示意图;
图3B为本公开另一实施例提供的验证方法的流程示意图;
图4为本公开至少一实施例提供的一种验证装置的结构示意图;
图5为本公开至少一实施例提供的一种存储介质的示意图;
图6A为本公开另一些实施例提供的验证装置的示意图;以及
图6B为本公开至少一实施例提供的选择和分配单元的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
随着设计规模的不断增加,验证难度越来越大。这种难度的增加体现在几个方面。然而,一个关键点是验证时间越来越长。这里的验证时间主要是指厂商验证工具(比如Synopsys的VCS和Cadence的NCSIM)的模拟时间。
验证工程师编写测试用例(test case),并利用测试用例对逻辑代码进行验证。图1A为一种逻辑代码的验证环境示意图。
如图1A所示,例如,验证平台是使用SystemVerilog(SV)语言搭建的,测试用例是在C域(使用C语言或C++语言)编写的,为了方便交互,在验证平台中定义直接编程接口(Direct Programming Interface,DPI)函数,事务(transaction),例如测试激励,从C域传递到验证平台,然后解释为对应于特定总线接口的总线事务。最后,通过将总线事务驱动到设计接口上来触发设计行为。
图1B为一种验证平台的框图,图1C示出了一种逻辑代码的验证方法的流程图。结合参考图1B和图1C,验证平台包括驱动组件(driver)、预期组件(reference model)、检测组件(monitor)和比对组件(scoreboard)。驱动组件用于分别向预期组件和逻辑代码(例如也称作DUT(Design Under Test))中输入激励(例如测试用例),检测组件用于检测该逻辑代码的输出信号并将所述输出信号输入至所述比对组件,比对组件用于将逻辑代码的输出信号与预期组件的输出进行比对分析该逻辑代码的输出信号是否正确,从而判断逻辑代码的行为是否与预期相符合,当逻辑代码的输出信号正确时表明仿真通过,当逻辑代码的输出信号不正确时则需要对逻辑代码进行调试,直至仿真通过。
如图1A所示,描述实际电路的逻辑代码通常包括多个逻辑模块,如Sub_A、Sub_B、Sub_C、Sub_D和Sub_E等,每个逻辑模块代表硬件电路上的逻辑实体,并实现特定的功能。模块之间是分层级(hierarchy)的,高层级的模块通过调用、连接低层级的模块的实例来实现复杂的功能。在当前的验证工具或验证平台中,多个逻辑模块都是分配在同一个处理器中进行验证。测试用例的数量可以超过数百或数千个,每个测试用例可能需要几个小时,甚至一天以上的时间来仿真。如此长的仿真时间已经成为提高验证效率的瓶颈。
一种验证方法是在同一个处理器(如CPU)中将多个逻辑模块创建多个线程(thread),在资源充足(如内存充足)的情况下,多个线程可以并行执行以提高运行效率。然而,仿真过程中所涉及的线程数量庞大,例如一个简单的测试用例就可能需要创建几千个线程,一个处理器中的资源非常有限,因此无法实现有效的并行运算。
本公开至少一实施例提供一种逻辑代码的验证方法,在逻辑代码中选出符合预设条件的多个逻辑模块分配至多个处理器进行并行仿真,有效利用了处理器资源,并缩短了验证时间。
例如,该预设条件可以使得被选择的多个逻辑模块之间有较高的独立性,可以通过不同处理器上并行仿真并且节省仿真时间。
图2A为本公开至少一实施例提供的一种逻辑代码的验证方法的步骤图。该逻辑代码包括M个逻辑模块,如图2A所示,该验证方法包括以下步骤S101和步骤S102。
步骤S101:对该M个逻辑模块进行第一仿真得到仿真分析结果(profilingresult)。
例如,该仿真分析结果包括各逻辑模块所消耗的验证时间和层级信息,可以为后续的逻辑模块的筛选步骤提供依据。
以图1A所示逻辑代码为例,如图1A所示,该逻辑代码共包括14个逻辑模块:Sub_A、Sub_B、Sub_C、Sub_D和Sub_E以及a1-a3、b1-b3、c1-c3。逻辑模块Sub_A、Sub_B、Sub_C、Sub_D和Sub_E位于同一层级,均实例化在顶层设计模块中。逻辑模块a1-a3、b1-b3、c1-c3位于同一层级,其中,a1-a3实例化在逻辑模块Sub_A中,b1-b3实例化在逻辑模块Sub_B中,c1-c3实例化在逻辑模块Sub_C中。逻辑模块a1-a3、b1-b3、c1-c3的层级较Sub_A、Sub_B、Sub_C、Sub_D和Sub_E的层级更低。逻辑模块的层级越高,仿真时间越长。
表1仅示出了逻辑模块Sub_A、Sub_B、Sub_C的部分仿真信息。从表1可以看出,逻辑模块Sub_A、Sub_B、Sub_C分别消耗的仿真时间占总仿真时间的比值(%TotalTime),逻辑模块Sub_A、Sub_B、Sub_C均实例化在顶层设计(simulation top,tb)模块中因而位于同一层级。
表1
Instance | %TotalTime | Module/Program/Architecture | Source |
tb.design_top.Sub_A | 15.52 | sub_a | sub_a.v |
tb.design_top.Sub_B | 16.22 | sub_b | sub_b.v |
tb.design_top.Sub_C | 17.74 | sub_c | sub_c.v |
例如,对所述M个逻辑模块进行第一仿真得到仿真分析结果包括:通过验证平台对所述逻辑代码进行所述第一仿真,当所述第一仿真通过时得到所述仿真分析结果。
例如,该第一仿真的过程可以参考关于图1C的描述,例如包括:利用仿真工具(如Synopsys的VCS和Cadence的NCSIM)将待测试的逻辑代码集成至验证平台中,通过该验证平台的驱动组件分别将测试用例输入到验证平台的预期组件和该逻辑代码中,通过验证平台的检测组件检测该逻辑代码的输出信号并将该输出信号输入至验证平台的比对组件,以及通过该比对组件将该逻辑代码的输出信号与该预期组件的输出进行比对分析该逻辑代码的输出信号是否正确,当该逻辑代码的输出信号正确时该第一仿真通过。
在另一些示例中,该第一仿真可以包括初步仿真和深度仿真。例如,该初步仿真可以用于验证逻辑代码在逻辑结构上是否存在问题,而不需要具体的仿真分析结果,当初步仿真通过后,可以再进行深度仿真从而得到该仿真分析结果,当该深度仿真通过时得到所述仿真分析结果。由于生成仿真分析结果需要较长的时间,并且只有在逻辑代码结构正确的前提下该仿真分析结果才具有参考性,因此可以先通过初步仿真确保逻辑代码的结构正确然后再进行深度仿真生成该仿真分析结果,这样可以节省仿真时间。该初步仿真和深度仿真的大致过程分别可以参考关于图1C及第一仿真过程的描述。
步骤S102:根据该仿真分析结果,在该M个逻辑模块中选择符合预设条件的N个逻辑模块,并将该N个逻辑模块分别分配给N个处理器进行第二仿真,M、N均为正整数并且M大于N。
例如,该预设条件包括该N个逻辑模块中的每个所消耗的仿真时间在所述逻辑代码的总仿真时间的占比大于预设占比值。例如该预设占比值大于或等于10%,例如为15%。这样当选择该N个逻辑模块并行仿真时可以有效起到缩短仿真时间的作用。
例如,该预设条件还包括:该N个逻辑模块位于同一层级。这种设置是为了提高该N个逻辑模块的独立性,从而可以有效缩短仿真时间。位于同一层级的逻辑模块之间不存在彼此实例化的关系,从而提高了逻辑模块的逻辑功能彼此独立的概率。当逻辑模块之间逻辑功能不独立时,如图1A中的逻辑模块Sub_A和Sub_E,Sub_A的输出作为Sub_E的输入,也即Sub_E需要等待Sub_A的仿真结果才能运行,因此不利于缩短仿真时间。
例如,该N个处理器分别对该N个逻辑模块进行并行仿真,该N个逻辑模块所消耗的总仿真时间为该N个逻辑模块中仿真时间最长的逻辑模块的仿真时间。
例如,该预设条件还包括:该逻辑代码是在SV域中而不是C域中编写的。例如,该逻辑代码是用Verilog或者SystemVerilog编写的,而不包括C或C++代码。这是为了避免出现仿真工具不支持而导致仿真分析结果出错。
例如,该预设条件还包括对于数值N的限定,例如N小于当前可以使用的处理器的数量。
例如,根据该仿真分析结果,在该M个逻辑模块中选择符合预设条件的N个逻辑模块,并将该N个逻辑模块分别分配给N个处理器进行第二仿真,包括:根据该仿真分析结果生成配置文件(configuration file),其中,该配置文件包括分配信息,示出了被选择的N个逻辑模块的信息;根据该配置文件将该N个逻辑模块分别分配给N个处理器进行第二仿真。
例如,该配置文件示出选出的N个逻辑模块的信息如下所示:
partition{tb.design_top.Sub_A(sub_a)};
partition{tb.design_top.Sub_B(sub_b)};
partition{tb.design_top.Sub_C(sub_c)};
从该配置文件可以看出根据上述预设条件选出了满足该预设条件的三个逻辑模块Sub_A、Sub_B和Sub_C。
例如,根据该仿真分析结果生成配置文件包括:根据该预设条件对该仿真分析结果进行可行性分析,当该可行性分析的结果表明可行时根据所述仿真分析结果生成配置文件。
例如,可以从该仿真分析结果中提取各逻辑模块所消耗的仿真时长占比以及层级信息并存储到数据库中,然后从数据库中读取这些信息并根据该预设条件进行可行性分析并生成该配置文件。
然后将该配置文件导入到验证平台中,并根据该配置文件将该三个逻辑模块分别分配至三个处理器进行并行仿真运算。例如,还需要另外一个处理器对主线程(MasterThread),也即对余下的(M-N)个逻辑模块进行仿真。图2B示出了该逻辑代码在处理器上的分配情形。例如,验证装置包括N+1个处理器,其中N个处理器分别用于仿真该逻辑代码中符合预设条件的N个逻辑模块,第N+1个处理器用于仿真该逻辑代码中除该逻辑模块之外的M-N个逻辑模块。
表2示出了采用本公开至少一实施例提供的验证方法以及采用传统验证方法对逻辑代码进行仿真的仿真分析数据。
表2
测试用例 | 传统方法耗时 | 改进后方法耗时 | 提升率 |
test_a | 10.4h | 8.1h | 22% |
test_b | 7.8h | 5.7h | 27% |
test_c | 8.6h | 7.1h | 17% |
从表2可以看出,在不同的测试用例下,逻辑模块的仿真时长均缩短了15%以上,从而提高了仿真效率。
在集成电路的设计过程中,在逻辑结构的基础上会对逻辑功能进行逐步完善优化,逻辑代码中的逻辑模块的数量会逐步增加,在此过程中需要不断对优化后的逻辑代码进行大量仿真,通过对原始逻辑代码中的N个逻辑模块进行并行仿真运算处理,可以缩短后续仿真过程(例如对后续每一次优化后的逻辑代码的仿真)的时间,提高仿真效率。
例如,当可行性分析结果表明不可行时,可以修改预设条件,例如降低每个逻辑模块所消耗的仿真时间的预设占比值从而降低筛选门槛。
在另一些示例中,例如,该验证方法还包括:当该第二仿真所消耗的仿真时间超过预设值时,修改该配置文件,并根据修改后的配置文件对该逻辑代码进行第三仿真。
例如,在图1A所示的逻辑模块中,根据预设条件选择了三个逻辑模块Sub_A、Sub_B和Sub_D分配到三个处理器中分别进行仿真,由于逻辑模块Sub_A、Sub_B的输出均作为逻辑模块Sub_D的输入,因此Sub_D需要等待Sub_A和Sub_B的仿真结果才能开始仿真运算,也即将逻辑模块Sub_D单独分配处理器并不能有效缩短仿真时间。当分析第二仿真的仿真结果时,发现该第二仿真所消耗的仿真时间超过预设值时,可以修改配置文件中的分配信息,例如将逻辑模块Sub_D替换为逻辑模块Sub_C,然后将修改后的配置文件导入验证平台对逻辑代码再次进行仿真。通过对配置文件的修改,可以对验证方法进一步进行优化,从而进一步提高验证效率。
图3A示出了本公开至少一实施例提供的一种逻辑代码的验证方法的流程示意图。以下结合图3A对该验证方法进行简要说明,具体步骤可参考对图2A的相关说明。
如图3A所示,该验证方法包括:首先对逻辑代码进行第一仿真,包括先进行初步仿真,当初步仿真通过时对该逻辑代码进行深度仿真并生成仿真分析结果,然后根据预设条件对该仿真分析结果进行可行性分析;当结果表明可行时生成配置文件,并将从逻辑代码中选择出来的符合预设条件的N个逻辑模块分别分配给N个处理器进行第二仿真,然后分析仿真结果;当可行性分析结果表明不可行时可以直接分析仿真结果。
在另一些示例中,如图3B所示,当可行性分析结果表明不可行时,可以修改预设条件,例如降低每个逻辑模块所消耗的仿真时间的预设占比值从而降低筛选门槛,直至可行性分析结果表明可行,并生成配置文件。
本公开至少一实施例还提供一种验证装置,适用如上任一实施例提供的验证方法。
图4为本公开至少一实施例提供的一种验证装置的结构示意图。该验证装置400可以是个人电脑、笔记本电脑、平板电脑、移动电话等终端设备也可以是工作站、服务器、云服务等。需要注意的是,图4示出的该验证装置400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图4所示,验证装置400可以包括处理装置410(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)420中的程序或者从存储装置480加载到随机访问存储器(RAM)430中的程序而执行各种适当的动作和处理。在RAM430中,还存储有验证装置400操作所需的各种程序和数据。处理装置410、ROM 420以及RAM 430通过总线440彼此相连。输入/输出(I/O)接口450也连接至总线440。
通常,以下装置可以连接至I/O接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许验证装置400与其他电子设备进行无线或有线通信以交换数据。虽然图4示出了包括各种装置的验证装置400,但应理解的是,并不要求实施或具备所有示出的装置,验证装置400可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述验证方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述验证方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从ROM420安装。在该计算机程序被处理装置410执行时,可以执行本公开实施例提供的验证方法中限定的功能。
例如,该验证装置400还包括上述N+1个处理器,当处理装置410执行上述验证方法时,该N+1个处理器中的N个分别对逻辑代码中的N个逻辑模块进行仿真,另外一个对主线程进行仿真。例如,该处理装置可以是该N+1个处理器之一,也可以是该N个处理器以外的处理器。
本公开至少一个实施例还提供一种存储介质,用于存储非暂时性计算机程序可执行代码(例如计算机可执行指令),当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的验证方法;或者,当该非暂时性计算机程序可执行代码由计算机执行时可以实现本公开任一实施例所述的验证方法。
图5为本公开一实施例提供的一种存储介质的示意图。如图5所示,存储介质700非暂时性地存储有计算机程序可执行代码701。例如,当计算机程序可执行代码701由计算机执行时可以执行根据上文所述的验证方法中的一个或多个步骤。
例如,该存储介质700可以应用于上述验证装置400中。例如,存储介质700可以为图4所示的验证装置400中的存储器420。例如,关于存储介质700的相关说明可以参考图4所示的验证装置400中的存储器420的相应描述,此处不再赘述。
图6A为本公开另一些实施例提供的一种逻辑代码的验证装置,适用于上述任一实施例提供的验证方法。如图6A所示,该验证装置600包括仿真分析单元610以及选择和分配单元620。该仿真分析单元610配置为对逻辑代码中的M个逻辑模块进行第一仿真得到仿真分析结果;该选择和分配单元620配置为根据该仿真分析结果,在该M个逻辑模块中选择符合预设条件的N个逻辑模块,并将该N个逻辑模块分别分配给N个处理器进行第二仿真。
例如,该仿真分析结果包括各逻辑模块所消耗的验证时间和层级信息,可以为后续的逻辑模块的筛选步骤提供依据。
例如,该仿真分析单元610包括初步仿真单元和深度仿真单元。该初步仿真单元可以用于验证逻辑代码在逻辑结构上是否存在问题,而不需要具体的仿真分析结果,当初步仿真通过后,再利用深度仿真单元进行深度仿真从而得到该仿真分析结果,当该深度仿真通过时得到该仿真分析结果。由于生成仿真分析结果需要较长的时间,并且只有在逻辑代码结构正确的前提下该仿真分析结果才具有参考性,因此可以先通过初步仿真确保逻辑代码的结构正确然后再进行深度仿真生成该仿真分析结果,这样可以节省仿真时间。
例如,如图6B所示,该选择和分配单元620包括配置文件生成单元621和分配单元622,该配置文件生成单元621配置为根据该仿真分析结果和该预设条件生成配置文件,该配置文件包括分配信息,示出了该N个逻辑模块的信息;该分配单元622配置为根据该配置文件将该N个逻辑模块分别分配给该N个处理器进行该第二仿真。
例如,该预设条件包括该N个逻辑模块中的每个所消耗的仿真时间在所述逻辑代码的总仿真时间的占比大于预设占比值。例如该预设占比值大于或等于10%,例如为15%。这样当选择该N个逻辑模块并行仿真时可以有效起到缩短仿真时间的作用。
例如,该预设条件还包括:该N个逻辑模块位于同一层级。这种设置是为了提高该N个逻辑模块的独立性,从而可以有效缩短仿真时间。位于同一层级的逻辑模块之间不存在彼此实例化的关系,从而提高了逻辑模块的逻辑功能彼此独立的概率。当逻辑模块之间逻辑功能不独立时,如图1A中的逻辑模块Sub_A和Sub_E,Sub_A的输出作为Sub_E的输入,也即Sub_E需要等待Sub_A的仿真结果才能运行,因此不利于缩短仿真时间。
例如,该预设条件还包括:该逻辑代码是在SV域中而不是C域中编写的。例如,该逻辑代码是用Verilog或者SystemVerilog编写的,而不包括C或C++代码。这是为了避免出现仿真工具不支持而导致仿真分析结果出错。
例如,该预设条件还包括对于数值N的限定,例如N小于当前可以使用的处理器的数量。
例如,该配置文件生成单元621包括可行性分析单元623,该可行性分析单元623配置为根据该预设条件对该仿真分析结果进行可行性分析,以及当该可行性分析的结果表明可行时根据该仿真分析结果生成该配置文件。
例如,该配置文件生成单元621还包括导入单元,配置为将生成的配置文件导入验证平台,从而使得可以根据该配置文件中的分配信息对该N个逻辑模块进行第二仿真。
例如,上述仿真分析单元610、选择和分配单元620、配置文件生成单元621和分配单元622等各单元可以为硬件、软件、固件以及它们的任意可行的组合。例如,上述各个单元可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
Claims (14)
1.一种逻辑代码的验证方法,其中,所述逻辑代码包括M个逻辑模块,所述验证方法包括:
对所述M个逻辑模块进行第一仿真得到仿真分析结果;
根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,其中,M、N均为正整数并且M大于N。
2.如权利要求1所述的验证方法,其中,所述预设条件包括:所述N个逻辑模块中的每个所消耗的仿真时间在所述逻辑代码的总仿真时间的占比大于预设占比值。
3.如权利要求2所述的验证方法,其中,所述预设条件还包括:所述N个逻辑模块位于同一层级。
4.如权利要求2所述的验证方法,其中,对所述M个逻辑模块进行第一仿真得到仿真分析结果包括:
通过验证平台对所述逻辑代码进行所述第一仿真,
当所述第一仿真通过时生成所述仿真分析结果。
5.如权利要求4所述的验证方法,其中,所述验证平台包括驱动组件、预期组件、检测组件和比对组件;
通过所述验证平台对所述逻辑代码进行所述第一仿真包括:
通过所述驱动组件分别将测试用例输入到所述预期组件和所述逻辑代码中,
通过所述检测组件检测所述逻辑代码的输出信号并将所述输出信号输入至所述比对组件,以及
通过所述比对组件将所述逻辑代码的输出信号与所述预期组件的输出进行比对分析所述逻辑代码的输出信号是否正确,当所述逻辑代码的输出信号正确时所述第一仿真通过。
6.如权利要求4所述的验证方法,其中,所述第一仿真包括初步仿真和深度仿真,当所述深度仿真通过时生成所述仿真分析结果。
7.如权利要求1-6任一所述的验证方法,其中,根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,包括:
根据所述仿真分析结果和所述预设条件生成配置文件,其中,所述配置文件示出了所述N个逻辑模块的信息;
根据所述配置文件将所述N个逻辑模块分别分配给所述N个处理器进行所述第二仿真。
8.如权利要求7所述的验证方法,其中,根据所述仿真分析结果和所述预设条件生成配置文件包括:
根据所述预设条件对所述仿真分析结果进行可行性分析,当所述可行性分析的结果表明可行时根据所述仿真分析结果生成配置文件。
9.如权利要求7所述的验证方法,还包括:当所述第二仿真所消耗的仿真时间超过预设值时,修改所述配置文件,并根据修改后的配置文件对所述逻辑代码进行第三仿真。
10.一种逻辑代码的验证装置,适用如权利要求1-9任一所述的验证方法,包括:
处理装置;和
存储器,其中,所述存储器中存储有计算机可执行代码,所述计算机可执行代码当由所述处理装置运行时,执行权利要求1-9任一所述的验证方法。
11.一种计算机可读存储介质,其上存储有计算机可执行代码,所述计算机可执行代码在被处理装置执行时,使得所述处理装置执行权利要求1-9任一所述的验证方法。
12.一种逻辑代码的验证装置,其中,所述逻辑代码包括M个逻辑模块,所述验证装置包括:
仿真分析单元,配置为对所述M个逻辑模块进行第一仿真得到仿真分析结果;
选择和分配单元,配置为根据所述仿真分析结果,在所述M个逻辑模块中选择符合预设条件的N个逻辑模块,并将所述N个逻辑模块分别分配给N个处理器进行第二仿真,其中,M、N均为正整数并且M大于N。
13.如权利要求12所述的验证装置,其中,所述选择和分配单元包括配置文件生成单元和分配单元,
所述配置文件生成单元配置为根据所述仿真分析结果和所述预设条件生成配置文件,所述配置文件示出了所述N个逻辑模块的信息;
所述分配单元配置为根据所述配置文件将所述N个逻辑模块分别分配给所述N个处理器进行所述第二仿真。
14.如权利要求13所述的验证装置,其中,所述配置文件生成单元包括可行性分析单元,
所述可行性分析单元配置为根据所述预设条件对所述仿真分析结果进行可行性分析,以及当所述可行性分析的结果表明可行时根据所述仿真分析结果生成所述配置文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011162179.2A CN112257362B (zh) | 2020-10-27 | 2020-10-27 | 逻辑代码的验证方法、验证装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011162179.2A CN112257362B (zh) | 2020-10-27 | 2020-10-27 | 逻辑代码的验证方法、验证装置以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112257362A true CN112257362A (zh) | 2021-01-22 |
CN112257362B CN112257362B (zh) | 2023-01-31 |
Family
ID=74261986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011162179.2A Active CN112257362B (zh) | 2020-10-27 | 2020-10-27 | 逻辑代码的验证方法、验证装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112257362B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343629A (zh) * | 2021-06-25 | 2021-09-03 | 海光信息技术股份有限公司 | 集成电路验证方法、代码生成方法、系统、设备和介质 |
CN114996077A (zh) * | 2022-08-08 | 2022-09-02 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783014A (zh) * | 2004-12-02 | 2006-06-07 | 国际商业机器公司 | 开发异构型多处理器计算机系统上的并行性的方法和系统 |
CN101019084A (zh) * | 2005-04-12 | 2007-08-15 | 学校法人早稻田大学 | 多处理器系统以及多粒度并行化编译程序 |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102713864A (zh) * | 2010-01-22 | 2012-10-03 | 新思公司 | 用于基于分组转换的逻辑复制的方法和系统 |
CN105205191A (zh) * | 2014-06-12 | 2015-12-30 | 济南概伦电子科技有限公司 | 多速率并行电路仿真 |
-
2020
- 2020-10-27 CN CN202011162179.2A patent/CN112257362B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783014A (zh) * | 2004-12-02 | 2006-06-07 | 国际商业机器公司 | 开发异构型多处理器计算机系统上的并行性的方法和系统 |
CN101019084A (zh) * | 2005-04-12 | 2007-08-15 | 学校法人早稻田大学 | 多处理器系统以及多粒度并行化编译程序 |
CN101329638A (zh) * | 2007-06-18 | 2008-12-24 | 国际商业机器公司 | 程序代码的并行性的分析方法和系统 |
CN101515231A (zh) * | 2009-03-23 | 2009-08-26 | 浙江大学 | 基于数据流分析的单线程程序并行化的实现方法 |
CN102713864A (zh) * | 2010-01-22 | 2012-10-03 | 新思公司 | 用于基于分组转换的逻辑复制的方法和系统 |
CN105205191A (zh) * | 2014-06-12 | 2015-12-30 | 济南概伦电子科技有限公司 | 多速率并行电路仿真 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343629A (zh) * | 2021-06-25 | 2021-09-03 | 海光信息技术股份有限公司 | 集成电路验证方法、代码生成方法、系统、设备和介质 |
CN114996077A (zh) * | 2022-08-08 | 2022-09-02 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN114996077B (zh) * | 2022-08-08 | 2022-11-01 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
Also Published As
Publication number | Publication date |
---|---|
CN112257362B (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106940428B (zh) | 芯片验证方法、装置及系统 | |
US7415444B2 (en) | Determining compliance rates for probabilistic requests | |
CN112257362B (zh) | 逻辑代码的验证方法、验证装置以及存储介质 | |
CN110990053A (zh) | 机器学习方案模板的创建方法、使用方法及装置 | |
Catelani et al. | Software automated testing: A solution to maximize the test plan coverage and to increase software reliability and quality in use | |
CN111858371A (zh) | 软件测试方法、系统、存储介质及计算机设备 | |
US10592703B1 (en) | Method and system for processing verification tests for testing a design under test | |
US20230153158A1 (en) | Method, apparatus, system, and storage medium for performing eda task | |
CN101263498A (zh) | 用于集成电路设计仿真的断言的开发 | |
JP2015219906A (ja) | ソフトウェア確認方法およびプロセッサ | |
US10295596B1 (en) | Method and system for generating validation tests | |
US9690681B1 (en) | Method and system for automatically generating executable system-level tests | |
CN112597718A (zh) | 集成电路设计的验证方法、验证装置以及存储介质 | |
CN114691371A (zh) | 多线程同时转换Pattern的方法及装置 | |
US10528691B1 (en) | Method and system for automated selection of a subset of plurality of validation tests | |
CN114398282A (zh) | 测试脚本的生成方法、装置、设备及存储介质 | |
CN110705191B (zh) | 一种多形态模拟仿真验证环境的构建方法 | |
CN111985194A (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN109696614B (zh) | 电路测试优化方法及装置 | |
CN116306392A (zh) | 芯片仿真装置、方法、电子设备和存储介质 | |
CN112579046B (zh) | 用户故事分析方法、装置、电子设备及存储介质 | |
CN117667655A (zh) | 验证系统、验证方法、电子设备以及存储介质 | |
US10803219B1 (en) | Method and system for combined formal static analysis of a design code | |
CN114896164A (zh) | 接口优化方法、装置、电子设备及存储介质 | |
US7277840B2 (en) | Method for detecting bus contention from RTL description |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |