CN114996077B - 一种多核并行仿真方法及实现多核并行仿真的平台架构 - Google Patents
一种多核并行仿真方法及实现多核并行仿真的平台架构 Download PDFInfo
- Publication number
- CN114996077B CN114996077B CN202210941533.4A CN202210941533A CN114996077B CN 114996077 B CN114996077 B CN 114996077B CN 202210941533 A CN202210941533 A CN 202210941533A CN 114996077 B CN114996077 B CN 114996077B
- Authority
- CN
- China
- Prior art keywords
- simulation
- component
- verification
- thread
- code
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种多核并行仿真方法及实现多核并行仿真的平台架构,涉及芯片仿真技术领域。该仿真方法包括:根据设计代码和验证代码,将芯片仿真任务一分为二,得到设计代码仿真任务和验证代码仿真任务;将设计代码仿真任务和验证代码仿真任务分别在不同的CPU核上执行;同时,将验证代码仿真任务进一步分配到多个CPU核上执行;各个CPU核间采用多线程并行方式执行仿真任务。该仿真方法还包括:将设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;将转换后的验证代码分配到新的CPU核上执行。该平台架构包括设计仿真模块和验证仿真模块。本发明实现多核并行验证,进行软件仿真加速,提升芯片仿真验证速度和效率。
Description
技术领域
本发明涉及芯片仿真技术领域,具体涉及一种多核并行仿真方法及实现多核并行仿真的平台架构。
背景技术
在芯片仿真验证平台中,有两部分内容:设计代码+验证代码,一部分是使用Verilog语言或System Verilog语言编写的芯片设计代码,这部分代码可以综合成芯片的硬件,用于芯片制造;另一部分是使用其他语言编写的验证代码,这部分代码不可综合,不会用于芯片制造,仅用于芯片验证;其他语言为System Verilog/C++/Python等。
这两部分代码需要在高性能服务器上执行,其中第一部分的设计代码所占的执行时间在30%-90%之间,第二部分的验证平台代码所占时间在10%-70%之间。
随着芯片规模的扩大,这两部分的代码规模变得很大,仿真执行会耗费大量的时间,根据规模不同,仿真执行时间在几分钟到十几天的范围。提升仿真效率,缩短仿真时间是芯片行业的老大难问题。
解决的问题的方向有两个方向:一是软件仿真加速;二是硬件仿真加速。这两种加速方案都有发展,互为补充,但并不会彼此取代。
现有软件仿真加速方案:
为了提升仿真效率,缩短仿真时间,业界针对混在一起的Verilog设计代码和验证代码进行了任务分割,试图将分割后的任务分配到多个CPU核上执行以实现仿真加速,期望的加速的倍数为10倍左右。在特定的设计场合可以到达理论值的加速倍数,在通用的场景下,实际的加速倍数只有1.2~1.5倍。然而,现有软件仿真加速方案提升效率有限,实际是被废弃的、不再发展的方案。
即现有软件仿真技术方案中,“设计代码”和“验证代码”混合在一起,这是基于芯片仿真业务本身的特点使“设计代码”和“验证代码”不易进行切分。但“设计代码”和“验证代码”的行为特点有很大的差异,“设计代码”描述的是硬件的行为,“验证代码”描述的是软件的行为。现有方案没有根据“设计代码”和“验证代码”的本质不同,按“设计代码”的特点对仿真任务进行切分,其切分工作一方面受到“验证代码”任务的牵制,无法有效实现对“验证代码”的切分;另一方面,“设计代码”千差万别,靠自动化工具完成任务的有效切分,关键是无法有效减少任务间的关联性。
其中,使用工具进行切分,是将“设计代码”和“验证代码”均作为“设计代码”进行切分,工具完成的切分工作后,将切分任务运行到多个CPU核上执行,切分任务为几万、几十万、甚至数百万个任务;多个CPU核采用2-64个。“设计代码”切分出的任务小,数量庞大;“验证代码”切分出的任务大,数量少。最后决定加速效果的是“验证代码”切分出的大任务,因这些任务需要互相交换数据,其同步要互相等待耗费时间,加速效果受限。
只有在线程数和CPU核数量相当时才能起到加速的作用。以上现有软件仿真技术方案切分的线程任务数量远远大于可以使用的CPU核的数量,势必有上千个任务执行在1个核上,这些线程任务为分时执行,线程切换有耗时开销,抵消了部分加速效果。
发明内容
本发明所要解决的技术问题是在芯片仿真验证中的软件仿真技术方案存在仿真速度慢和效率低的问题,目的在于提供一种多核并行仿真方法及实现多核并行仿真的平台架构,本发明方法是一种改进的软件仿真加速方案,基于PVM(Parallel VerificationMethodology)并行验证方法学,实现多核并行验证,进行仿真加速,提升芯片仿真验证速度和效率。
本发明通过下述技术方案实现:
第一方面,本发明提供了一种多核并行仿真方法,该仿真方法包括:
根据设计代码和验证代码的不同,将芯片仿真任务一分为二,得到设计代码仿真任务和验证代码仿真任务;
将所述设计代码仿真任务和所述验证代码仿真任务分别在不同的CPU核上执行;
同时,将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行;
本发明聚焦软件仿真加速方案的研究,提出基于PVM(Parallel VerificationMethodology)并行验证方法学的概念,实现多核并行验证,进行仿真加速,提升芯片仿真验证速度和效率。本发明首先通过人工的方法将验证代码和设计代码区别对待,从整体上将验证代码和设计代码进行划分,一分为二为设计代码仿真任务和验证代码仿真任务;其次,分别将设计代码仿真任务和验证代码仿真任务分别在不同的CPU核上执行,可以最大限度地将较大的整体芯片仿真任务一分为二。由于验证代码和Verilog设计代码两者分属不同的技术领域,两者可以采用不同的技术和实现方案。这样一分为二,可以各自发展其仿真加速技术。以往的技术方法没有这样的思想基础,两种代码混为一体,彼此牵连,无法独自发展仿真加速技术。而本发明这种二分法,将提升设计代码仿真效率的任务简化,为后续技术发展提供了可能性。同时,将验证代码仿真任务进一步分配到多个CPU核上执行。
进一步地,该仿真方法还包括:
将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
将所述转换后的验证代码分配到新的CPU核上执行。
这是考虑到整个芯片仿真任务中设计代码所占的执行时间在30%-90%之间,而验证平台代码所占时间在10%-70%之间;因此,以上技术方案通过缩小设计代码的规模,也就缩短了设计代码的仿真时间。
进一步地,所述的将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行,包括:
将所述验证代码仿真任务划分为多个验证代码仿真子任务;
将多个所述验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个所述验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
所述多线程并行中的多线程包括若干个线程,且若干个线程实例执行在不同的CPU核上。
进一步地,所述设计代码仿真任务和多个所述验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信。
第二方面,本发明又提供了一种实现多核并行仿真的平台架构,该平台架构包括设计仿真模块和验证仿真模块;
所述设计仿真模块,用于运行Verilog设计代码,执行设计代码仿真任务;
所述验证仿真模块,用于将验证代码仿真任务分配到多个CPU核上,采用多CPU核、多线程并行方式执行验证代码仿真任务。
进一步地,该平台架构还包括验证平台监控模块,用于验证平台架构的管理和监控各不同CPU核上各线程的仿真任务执行情况。
进一步地,该平台架构还包括转换代码模块,用于将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
所述验证仿真模块,还用于将所述转换后的验证代码分配到新的CPU核上执行。
进一步地,所述验证仿真模块包括:
子任务划分单元,用于将所述验证代码仿真任务划分为多个验证代码仿真子任务;
任务仿真运行单元,用于将多个所述验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个所述验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
进一步地,所述设计代码仿真任务和多个所述验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信。
进一步地,所述线程包括8种类型的线程,分别为仿真主线程、验证平台主线程、参考模型线程、存储模型线程、驱动软件线程、激励线程、结果比较线程和仿真模型线程;
所述验证组件包括12种类型的验证组件,分别为系统模型组件、行为级参考模型组件、IP仿真模型组件、寄存器组件、软件引擎组件、记分牌组件、功能覆盖率组件、随机激励组件、流量调度组件、比较器组件、总线功能模型组件和故障注入组件;
所述验证组件与线程的分配关系为:
所述总线功能模型组件执行在仿真主线程中;
所述系统模型组件、行为级参考模型组件、记分牌组件和功能覆盖率组件执行在参考模型线程中;
所述寄存器组件和功能覆盖率组件执行在存储模型线程中;
所述软件引擎组件执行在驱动软件线程中;
所述功能覆盖率组件、随机激励组件、流量调度组件和故障注入组件执行在激励线程中;
所述功能覆盖率组件和比较器组件执行在结果比较线程中;
所述IP仿真模型组件和功能覆盖率组件执行在仿真模型线程中。
进一步地,所述通信管道包括随机激励组件与总线功能模型组件之间的第一通信通道、随机激励组件与行为级参考模型组件之间的第二通信通道、比较器组件与总线功能模型组件之间的第三通信通道、比较器组件与行为级参考模型组件之间的第四通信通道、软件引擎组件与总线功能模型组件之间的第五通信通道、软件引擎组件与寄存器组件之间的第六通信通道、行为级参考模型组件与寄存器组件之间的第七通信通道、寄存器组件与总线功能模型组件之间的第八通信通道、IP仿真模型组件与总线功能模型组件之间的第九通信通道。
进一步地,所述通信管道的数据交换采用数据包的形式,有效减少数据交换频率,有利效率提升。
本发明与现有技术相比,具有如下的优点和有益效果:
1、本发明从整体上将验证代码和设计代码进行了划分,并执行在不同的CPU核上,可以最大限度地将较大的仿真任务一分为二。由于验证平台代码和Verilog设计代码两者分属不同的技术领域,两者可以采用不同的技术和实现方案。这样一分为二,可以各自发展其仿真加速技术。以往的技术方法没有这样的思想基础,两种代码混为一体,彼此牵连,无法独自发展仿真加速技术。
2、本发明将验证平台划分为12种验证组件,并分别执行在7种不同的线程中,增加了验证平台仿真的并行度,更有利于缩短仿真时间。仿真节省时间范围:20%-80%,即加速效果为1.25-5倍,取决于设计代码和验证代码的执行时间比例。
3、本发明平台架构采用扁平化结构,而不是类似UVM的层次化、类封装的形式,降低了验证组件间的关联和耦合,有利于验证组件的独立发展而不互相牵连。
4、本发明验证组件线程间采用高效的通信管道,减少线程间的通信时间和等待时间。
5、本发明通过将Verilog设计代码中的IP模块采用IP仿真模型来替代,并让其执行在单独的CPU核上,这样可以大幅减少设计代码的仿真时间,具体可减少80%-95%。业界有IP的“仿真模型”的概念和实践,但并无仿真模型并行执行的概念和机制。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
图1为本发明一种多核并行仿真方法流程图。
图2为本发明一种实现多核并行仿真的平台架构结构示意图。
图3为本发明一种实现多核并行仿真的平台架构中通信管道的分布示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
实施例1
本发明聚焦软件仿真加速方案的研究,提出基于PVM(Parallel VerificationMethodology)并行验证方法学的概念,实现多核并行验证,进行仿真加速,提升芯片仿真验证速度和效率。本发明首先通过人工的方法将验证代码和设计代码区别对待,从整体上将验证代码和设计代码进行划分,一分为二为设计代码仿真任务和验证代码仿真任务;其次,分别将设计代码仿真任务和验证代码仿真任务分别在不同的CPU核上执行,可以最大限度地将较大的整体芯片仿真任务一分为二。由于验证代码和Verilog设计代码两者分属不同的技术领域,两者可以采用不同的技术和实现方案。这样一分为二,可以各自发展其仿真加速技术。以往的技术方法没有这样的思想基础,两种代码混为一体,彼此牵连,无法独自发展仿真加速技术。而本发明这种二分法,将提升设计代码仿真效率的任务简化,为后续技术发展提供了可能性。同时,将验证代码仿真任务进一步分配到多个CPU核上执行。
如图1所示,图1为本发明一种多核并行仿真方法流程图。本发明一种多核并行仿真方法,该仿真方法包括:
根据设计代码和验证代码的不同,将芯片仿真任务一分为二,得到设计代码仿真任务和验证代码仿真任务;
将所述设计代码仿真任务和所述验证代码仿真任务分别在不同的CPU核上执行;
同时,将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行;
作为进一步地实施,以上各个CPU核间采用多线程并行方式执行仿真任务。
作为进一步地实施,该仿真方法还包括:
将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
将所述转换后的验证代码分配到新的CPU核上执行。
这是考虑到整个芯片仿真任务中设计代码所占的执行时间在30%-90%之间,而验证平台代码所占时间在10%-70%之间;因此,以上技术方案通过缩小设计代码的规模,也就缩短了设计代码的仿真时间。
作为进一步地实施,所述的将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行,包括:
将所述验证代码仿真任务划分为多个验证代码仿真子任务;
将多个所述验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个所述验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
所述多线程并行中的多线程包括若干个线程,且若干个线程实例执行在不同的CPU核上。
作为进一步地实施,所述设计代码仿真任务和多个所述验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信。
实施例2
如图2所示,图2为本发明一种实现多核并行仿真的平台架构结构示意图。本实施例与实施例1的区别在于,本实施例提供了一种实现多核并行仿真的平台架构,该平台架构包括设计仿真模块和验证仿真模块;
所述设计仿真模块,用于运行Verilog设计代码,执行设计代码仿真任务;
所述验证仿真模块,用于将验证代码仿真任务分配到多个CPU核上,采用多CPU核、多线程并行方式执行验证代码仿真任务。
作为进一步地实施,所述设计仿真模块和验证仿真模块在不同的CPU核上,采用多CPU核、多线程并行方式执行各仿真任务。
作为进一步地实施,该平台架构还包括转换代码模块,用于将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
所述验证仿真模块,还用于将所述转换后的验证代码分配到新的CPU核上执行。
这是考虑到整个芯片仿真任务中设计代码所占的执行时间在30%-90%之间,而验证平台代码所占时间在10%-70%之间;因此,以上技术方案通过将IP的设计代码中的绝大部分转换为验证代码,并转移到另外的CPU核上运行,实现并行仿真的机制。这样通过转换代码模块来缩小设计代码的规模,也就缩短了设计代码的仿真时间。
该平台架构还包括验证平台监控模块,用于验证平台架构的管理和监控各不同CPU核上各线程的仿真任务执行情况。
作为进一步地实施,所述验证仿真模块包括:
子任务划分单元,用于将所述验证代码仿真任务划分为多个验证代码仿真子任务;
任务仿真运行单元,用于将多个所述验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个所述验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
作为进一步地实施,所述设计代码仿真任务和多个所述验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信。
具体实施时,在该平台架构下,设计代码和验证代码分别执行在8种类型的线程Thread(T1-T8)中。其中设计代码执行在simThreadT1线程中,以及从设计代码转换成的那一部分转换后的验证代码执行在线程dmThreadT8中。验证代码分别执行在线程T3-T7中,线程T2用于验证平台架构的管理和监控各不同CPU核上各线程的仿真任务执行情况。
以上8种线程(T1-T8),8个以上的线程实例,都执行在不同的CPU核上,实现了一个大的芯片仿真任务被分配到不同CPU核上去执行,实现了多核并行执行的效果,从而起到软件仿真加速的效果。
本发明将“验证代码”部分划分为8种类型的线程及各种类型线程的互联关系。线程种类更少或更多不重要,线程数量在十几、几十的范围即可,这和一台高性能服务器的2至64个CPU核数相当。各个线程划分,如下:
1、仿真主线程simThread(T1):是仿真器(sim:simulator)主线程,运行Verilog设计代码。
2、验证平台主线程sysThread(T2):用于验证平台的系统管理(sys:system)和监控。
3、参考模型线程brmThread(T3):用于运行行为级参考模型BRM(BehavioralReference Model)。
4、存储模型线程memThread(T4):用于运行待验证设计DUV(Design UnderVerification)和BRM内的存储(mem:memory)模型。
5、驱动软件线程softwareThread(T5):用于运行DUV的驱动软件,用于芯片的配置、数据处理等。
6、激励线程txThread(T6):用于构造并发送(tx : transmit)随机激励数据。
7、结果比较线程rxThread(T7):用于接收(rx : receive)结果数据和预期数据的比较程序。
8、仿真模型线程dmThread(T8):用于运行IP(Intellectual Property)仿真模型(dm : donut model)。
以上T4、T5、T6、T8类型的线程可以有多个线程,而T2、T3、T7类型的线程只能有1个。
本发明将验证代码进一步细分,分成多种验证组件VC,本发明为12种,并分配到以上8种类型的线程中执行,进一步提升验证代码的执行效率。
在本发明的一种实现多核并行仿真的平台架构中,分为如下12种类型的验证组件Verification Component,VC1-VC12。每种验证组件分别执行在不同的线程中。验证组件和执行线程的分配关系如下表1所示:
表1 分配关系表
具体地,本发明验证组件通过如下9种通信管道进行异步通信:
C1:随机激励组件VC8与总线功能模型组件VC11之间的第一通信通道;
C2:随机激励组件VC8与行为级参考模型组件VC2之间的第二通信通道;
C3:比较器组件VC10与总线功能模型组件VC11之间的第三通信通道;
C4:比较器组件VC10与行为级参考模型组件VC2之间的第四通信通道;
C5:软件引擎组件VC5与总线功能模型组件VC11之间的第五通信通道;
C6:软件引擎组件VC5与寄存器组件VC4之间的第六通信通道;
C7:行为级参考模型组件VC2与寄存器组件VC4之间的第七通信通道;
C8:寄存器组件VC4与总线功能模型组件VC11之间的第八通信通道;
C9:IP仿真模型组件VC3与总线功能模型组件VC11之间的第九通信通道。
以上9种通信管道的分布如图3所示。
多线程的同步,以及通信管道的通信效率决定了整个验证平台的仿真效率。只有各个线程不会互相等待,按各自最大的速度运行,则可以保证仿真效率的提升。
通信管道中交互的数据均为数据包,所述数据包为多种数据的集合,可以降低通信管道交换数据的频率,有效保证仿真效率。
以上线程种类数目、验证组件数目、通信管道数目可以根据实际情况会有所调整。
本发明具有如下技术优点:
1、本发明从整体上将验证代码和设计代码进行了划分,并执行在不同的CPU核上,可以最大限度地将较大的仿真任务一分为二。由于验证平台代码和Verilog设计代码两者分属不同的技术领域,两者可以采用不同的技术和实现方案。这样一分为二,可以各自发展其仿真加速技术。以往的技术方法没有这样的思想基础,两种代码混为一体,彼此牵连,无法独自发展仿真加速技术。
2、本发明将验证平台划分为12种验证组件,并分别执行在7种不同的线程中,增加了验证平台仿真的并行度,更有利于缩短仿真时间。仿真节省时间范围:20%-80%,即加速效果为1.25-5倍,取决于设计代码和验证代码的执行时间比例。
3、本发明平台架构采用扁平化结构,而不是类似UVM的层次化、类封装的形式,降低了验证组件间的关联和耦合,有利于验证组件的独立发展而不互相牵连。
4、本发明验证组件线程间采用高效的通信管道,减少线程间的通信时间和等待时间。
5、本发明通过将Verilog设计代码中的IP模块采用IP仿真模型来替代,并让其执行在单独的CPU核上,这样可以大幅减少设计代码的仿真时间,具体可减少80%-95%。业界有IP的“仿真模型”的概念和实践,但并无仿真模型并行执行的概念和机制。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种多核并行仿真方法,其特征在于,该仿真方法包括:
根据设计代码和验证代码,将芯片仿真任务一分为二,得到设计代码仿真任务和验证代码仿真任务;
将所述设计代码仿真任务和验证代码仿真任务分别在不同的CPU核上执行;
同时,将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行;
该仿真方法还包括:
将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
将所述转换后的验证代码分配到新的CPU核上执行;
所述设计代码仿真任务和多个验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信;
所述线程包括8种类型的线程,分别为仿真主线程、验证平台主线程、参考模型线程、存储模型线程、驱动软件线程、激励线程、结果比较线程和仿真模型线程;
所述验证组件包括12种类型的验证组件,分别为系统模型组件、行为级参考模型组件、IP仿真模型组件、寄存器组件、软件引擎组件、记分牌组件、功能覆盖率组件、随机激励组件、流量调度组件、比较器组件、总线功能模型组件和故障注入组件;
所述验证组件与线程的分配关系为:
所述总线功能模型组件执行在仿真主线程中;
所述系统模型组件、行为级参考模型组件、记分牌组件和功能覆盖率组件执行在参考模型线程中;
所述寄存器组件和功能覆盖率组件执行在存储模型线程中;
所述软件引擎组件执行在驱动软件线程中;
所述功能覆盖率组件、随机激励组件、流量调度组件和故障注入组件执行在激励线程中;
所述功能覆盖率组件和比较器组件执行在结果比较线程中;
所述IP仿真模型组件和功能覆盖率组件执行在仿真模型线程中。
2.根据权利要求1所述的一种多核并行仿真方法,其特征在于,将所述验证代码仿真任务进一步分配到多个CPU核上多线程并行执行,包括:
将所述验证代码仿真任务划分为多个验证代码仿真子任务;
将多个验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
3.使用如权利要求1至2中任一所述的一种多核并行仿真方法实现多核并行仿真的平台架构,其特征在于,该平台架构包括设计仿真模块和验证仿真模块;
所述设计仿真模块,用于运行Verilog设计代码,执行设计代码仿真任务;
所述验证仿真模块,用于将验证代码仿真任务分配到多个CPU核上,采用多CPU核、多线程并行方式执行验证代码仿真任务;
该平台架构还包括转换代码模块,用于将所述设计代码仿真任务中设计代码转换成验证代码,得到转换后的验证代码;
所述验证仿真模块,还用于将转换后的验证代码分配到新的CPU核上执行;
所述设计代码仿真任务和多个验证代码仿真子任务的仿真执行是通过将不同的验证组件分别执行在不同的线程中来实现,且各验证组件之间通过通信管道进行异步通信;
所述线程包括8种类型的线程,分别为仿真主线程、验证平台主线程、参考模型线程、存储模型线程、驱动软件线程、激励线程、结果比较线程和仿真模型线程;
所述验证组件包括12种类型的验证组件,分别为系统模型组件、行为级参考模型组件、IP仿真模型组件、寄存器组件、软件引擎组件、记分牌组件、功能覆盖率组件、随机激励组件、流量调度组件、比较器组件、总线功能模型组件和故障注入组件;
所述验证组件与线程的分配关系为:
所述总线功能模型组件执行在仿真主线程中;
所述系统模型组件、行为级参考模型组件、记分牌组件和功能覆盖率组件执行在参考模型线程中;
所述寄存器组件和功能覆盖率组件执行在存储模型线程中;
所述软件引擎组件执行在驱动软件线程中;
所述功能覆盖率组件、随机激励组件、流量调度组件和故障注入组件执行在激励线程中;
所述功能覆盖率组件和比较器组件执行在结果比较线程中;
所述IP仿真模型组件和功能覆盖率组件执行在仿真模型线程中。
4.根据权利要求3所述的实现多核并行仿真的平台架构,其特征在于,该平台架构还包括验证平台监控模块,用于验证平台架构的管理和监控各不同CPU核上各线程的仿真任务执行情况。
5.根据权利要求3所述的实现多核并行仿真的平台架构,其特征在于,所述验证仿真模块包括:
子任务划分单元,用于将所述验证代码仿真任务划分为多个验证代码仿真子任务;
任务仿真运行单元,用于将多个所述验证代码仿真子任务分配到对应的多个CPU核上,采用多CPU核、多线程并行方式执行多个所述验证代码仿真子任务;
其中,所述多CPU核、多线程并行方式指的是在多个CPU核间采用多线程并行执行。
6.根据权利要求3所述的实现多核并行仿真的平台架构,其特征在于,所述通信管道包括随机激励组件与总线功能模型组件之间的第一通信通道、随机激励组件与行为级参考模型组件之间的第二通信通道、比较器组件与总线功能模型组件之间的第三通信通道、比较器组件与行为级参考模型组件之间的第四通信通道、软件引擎组件与总线功能模型组件之间的第五通信通道、软件引擎组件与寄存器组件之间的第六通信通道、行为级参考模型组件与寄存器组件之间的第七通信通道、寄存器组件与总线功能模型组件之间的第八通信通道、IP仿真模型组件与总线功能模型组件之间的第九通信通道。
7.根据权利要求6所述的实现多核并行仿真的平台架构,其特征在于,所述通信管道的数据交换采用数据包的形式。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210941533.4A CN114996077B (zh) | 2022-08-08 | 2022-08-08 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
PCT/CN2023/088282 WO2024032017A1 (zh) | 2022-08-08 | 2023-04-14 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210941533.4A CN114996077B (zh) | 2022-08-08 | 2022-08-08 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114996077A CN114996077A (zh) | 2022-09-02 |
CN114996077B true CN114996077B (zh) | 2022-11-01 |
Family
ID=83022840
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210941533.4A Active CN114996077B (zh) | 2022-08-08 | 2022-08-08 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114996077B (zh) |
WO (1) | WO2024032017A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996077B (zh) * | 2022-08-08 | 2022-11-01 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
CN115248998B (zh) * | 2022-09-22 | 2023-01-03 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
CN116069504B (zh) * | 2023-01-28 | 2023-11-10 | 广汽埃安新能源汽车股份有限公司 | 自动驾驶仿真中多核处理器的调度方法及装置 |
CN116521339A (zh) * | 2023-04-26 | 2023-08-01 | 中国人民解放军92942部队 | 一种面向多用户并发访问的信号级仿真实现方法 |
CN117349101B (zh) * | 2023-12-05 | 2024-02-23 | 济南新语软件科技有限公司 | 一种芯片验证平台及其构建方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102183759A (zh) * | 2011-01-25 | 2011-09-14 | 中国船舶重工集团公司第七一五研究所 | 基于Linux集群的声纳实时信号处理实现方法 |
CN106528061A (zh) * | 2015-09-11 | 2017-03-22 | 黑龙江傲立辅龙科技开发有限公司 | 一种嵌入式系统软硬件协同设计方法 |
CN112257362A (zh) * | 2020-10-27 | 2021-01-22 | 海光信息技术股份有限公司 | 逻辑代码的验证方法、验证装置以及存储介质 |
CN112580295A (zh) * | 2020-11-24 | 2021-03-30 | 北京智芯微电子科技有限公司 | 多核SoC芯片的自动化验证方法、系统及装置 |
CN112861468A (zh) * | 2021-02-08 | 2021-05-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种软硬件协同仿真验证的方法、装置和介质 |
CN113032963A (zh) * | 2021-02-26 | 2021-06-25 | 北京经纬恒润科技股份有限公司 | 一种Simulink模型仿真加速方法及装置 |
CN113630280A (zh) * | 2021-10-11 | 2021-11-09 | 中国人民解放军火箭军工程大学 | 一种分布式协同仿真运行平台 |
CN113822004A (zh) * | 2020-09-22 | 2021-12-21 | 瞬曜电子科技(上海)有限公司 | 一种用于集成电路模拟加速和仿真的验证方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100921314B1 (ko) * | 2004-07-12 | 2009-10-13 | 양세양 | 검증결과 재활용 기법을 채용한 고성능 설계검증 장치 및이를 활용한 신속한 설계검증 방법 |
CN102508753B (zh) * | 2011-11-29 | 2014-09-03 | 青岛海信信芯科技有限公司 | Ip核验证系统 |
CN103150264B (zh) * | 2013-01-18 | 2014-09-17 | 浪潮电子信息产业股份有限公司 | 一种基于扩展型Cache Coherence协议的多级一致性域仿真验证和测试方法 |
CN114282464A (zh) * | 2021-12-27 | 2022-04-05 | 眸芯科技(上海)有限公司 | 芯片仿真验证中的协同仿真方法及应用 |
CN114996077B (zh) * | 2022-08-08 | 2022-11-01 | 济南新语软件科技有限公司 | 一种多核并行仿真方法及实现多核并行仿真的平台架构 |
-
2022
- 2022-08-08 CN CN202210941533.4A patent/CN114996077B/zh active Active
-
2023
- 2023-04-14 WO PCT/CN2023/088282 patent/WO2024032017A1/zh unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102183759A (zh) * | 2011-01-25 | 2011-09-14 | 中国船舶重工集团公司第七一五研究所 | 基于Linux集群的声纳实时信号处理实现方法 |
CN106528061A (zh) * | 2015-09-11 | 2017-03-22 | 黑龙江傲立辅龙科技开发有限公司 | 一种嵌入式系统软硬件协同设计方法 |
CN113822004A (zh) * | 2020-09-22 | 2021-12-21 | 瞬曜电子科技(上海)有限公司 | 一种用于集成电路模拟加速和仿真的验证方法及系统 |
CN112257362A (zh) * | 2020-10-27 | 2021-01-22 | 海光信息技术股份有限公司 | 逻辑代码的验证方法、验证装置以及存储介质 |
CN112580295A (zh) * | 2020-11-24 | 2021-03-30 | 北京智芯微电子科技有限公司 | 多核SoC芯片的自动化验证方法、系统及装置 |
CN112861468A (zh) * | 2021-02-08 | 2021-05-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种软硬件协同仿真验证的方法、装置和介质 |
CN113032963A (zh) * | 2021-02-26 | 2021-06-25 | 北京经纬恒润科技股份有限公司 | 一种Simulink模型仿真加速方法及装置 |
CN113630280A (zh) * | 2021-10-11 | 2021-11-09 | 中国人民解放军火箭军工程大学 | 一种分布式协同仿真运行平台 |
Non-Patent Citations (1)
Title |
---|
可重构计算系统中软硬件代码划分技术研究;沈英哲;《中国博士学位论文全文数据库信息科技辑(月刊)》;20070915;第1.4节、第3章 * |
Also Published As
Publication number | Publication date |
---|---|
CN114996077A (zh) | 2022-09-02 |
WO2024032017A1 (zh) | 2024-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114996077B (zh) | 一种多核并行仿真方法及实现多核并行仿真的平台架构 | |
Geng et al. | Elasticpipe: An efficient and dynamic model-parallel solution to dnn training | |
CN111079921A (zh) | 一种基于异构分布式系统的高效神经网络训练调度方法 | |
CN104243617A (zh) | 一种异构集群中面向混合负载的任务调度方法及系统 | |
CN102855153B (zh) | 面向片式多核处理器的流编译优化方法 | |
CN1845075A (zh) | 面向服务的网格高性能计算作业调度方法 | |
CN104375882A (zh) | 匹配于高性能计算机结构的多级嵌套数据驱动计算方法 | |
CN103414767A (zh) | 将应用软件部署在云计算平台上的方法和装置 | |
CN109032567B (zh) | 一种微服务环境中的服务开发和运行方法及其系统 | |
CN103810203A (zh) | 一种数据库管理系统连接复用方法及装置 | |
CN112905342A (zh) | 资源调度方法、装置、设备及计算机可读存储介质 | |
CN110879753B (zh) | 基于自动化集群资源管理的gpu加速性能优化方法和系统 | |
CN104360962A (zh) | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 | |
CN110083441B (zh) | 一种分布式计算系统及分布式计算方法 | |
CN107632890B (zh) | 一种数据流体系结构中动态节点分配方法和系统 | |
CN103838631B (zh) | 一种面向片上网络的多线程调度实现方法 | |
CN109710314B (zh) | 一种基于图结构分布式并行模式构建图的方法 | |
CN102710772A (zh) | 一种基于云平台的海量数据通讯系统 | |
Kehe et al. | The research on the software architecture of network packet processing based on the many-core processors | |
CN116910157B (zh) | 一种基于双层拓扑调度的异构系统数据同步方法及系统 | |
CN109840147A (zh) | 一种实现多队列网卡绑定cpu的方法及系统 | |
CN103631659A (zh) | 一种片上网络中面向通信能耗的调度优化方法 | |
CN105553802B (zh) | 一种异构航电网络和总线的数据实时接收方法 | |
CN115052002B (zh) | 基于最佳适应和最短路径算法的虚拟网络资源分配方法 | |
CN110362397B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |