CN103218251B - 多核系统级芯片的验证方法和装置 - Google Patents
多核系统级芯片的验证方法和装置 Download PDFInfo
- Publication number
- CN103218251B CN103218251B CN201310131817.8A CN201310131817A CN103218251B CN 103218251 B CN103218251 B CN 103218251B CN 201310131817 A CN201310131817 A CN 201310131817A CN 103218251 B CN103218251 B CN 103218251B
- Authority
- CN
- China
- Prior art keywords
- level chip
- multiple nucleus
- system level
- atomic lock
- operating system
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供一种多核系统级芯片的验证方法和装置。所述多核系统级芯片的验证方法,包括:在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;运行所述多线程,对所述多核系统级芯片进行仿真验证。本发明能够对多核系统级芯片进行灵活的仿真。
Description
技术领域
本发明涉及芯片验证领域,特别是指一种多核系统级芯片的验证方法和装置。
背景技术
常见的应用处理器芯片的流程包括:芯片设计、芯片仿真验证、芯片生产和产品开发四个阶段。其中,芯片仿真验证阶段主要是发现芯片的问题,并修改。产品开发阶段为将操作系统(例如android)移植到芯片平台上,开发应用软件,最终生产平板或者智能手机等产品。
现在的应用处理器越来越多地采用多核处理器,例如采用ARMCortexA94核。多核处理器的使用给仿真阶段带来了很大影响,需要充分发挥多核的作用,提前发现多核处理器与芯片各个模块间的交互的问题。
假设最终产品的操作系统为android,如果在仿真阶段实现android,会使得仿真速度变得很慢,android的启动boot就需要周量级的仿真时间,这样在时间上是不可接受的。
如果采用硬件加速器,可以把仿真时间控制在小时量级,但是硬件加速器成本高,而且通常只有少数几套,不适合大规模的团队验证。
如果简单的将原来的单核启动软件移植到多核仿真平台,虽然多核能够运行,但是运行方式与最终的产品相比有较大差异,不能真实反映多核与芯片其他模块的交互问题。并且,这种仿真方式灵活性差,不易制造复杂的仿真场景。
发明内容
本发明要解决的技术问题是提供一种多核系统级芯片的验证方法和装置,能够对多核系统级芯片进行灵活的仿真。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种多核系统级芯片的验证方法,包括:
在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
运行所述多线程,对所述多核系统级芯片进行仿真验证。
所述轻量级操作系统为US/OS-II操作系统。
所述为所述多核系统级芯片的每一个处理模块建立一个线程的步骤之前,还包括:
将多核系统级芯片的多核进行同步。
所述将多核系统级芯片的多核进行同步的步骤包括:
在所述轻量级操作系统的临界区代码入口处,关掉中断;
获取所述轻量级操作系统的原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述临界区代码时,释放所述原子锁,并打开所述中断。
所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的OSCtxSw函数的入口处占用原子锁;
在所述轻量级操作系统的OSCtxSw函数的出口释放所述原子锁;
所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的中断入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述中断时,释放所述原子锁。
所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的每个内存管理函数入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在所述内存管理函数出口,释放所述原子锁。
所述将多核系统级芯片的多核进行同步的步骤还包括:
将所述操作系统的Os_sys.ctimer中断由所述多核系统级芯片的其中一个核执行;或者
修改所述操作系统的相应字段以支持NEON处理器。
另一方面,提供一种多核系统级芯片的验证装置,包括:
建立模块,在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
运行模块,运行所述多线程,对所述多核系统级芯片进行仿真验证。
所述的多核系统级芯片的验证装置,其特征在于,还包括:
同步模块,将多核系统级芯片的多核进行同步。
本发明的实施例具有以下有益效果:
上述方案中,将轻量级操作系统应用于多核平台仿真,由于轻量级操作系统具备线程调度、中断管理等功能,在调度和中断管理上接近复杂操作系统,能够对多核SOC进行灵活的仿真。
附图说明
图1为本发明的多核系统级芯片的验证方法的流程示意图;
图2为本发明的多核系统级芯片的验证装置的流程示意图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
如图1所示,为本发明所述的一种多核系统级芯片的验证方法,包括:
步骤11,在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
该步骤具体为:将轻量级操作系统移植到多核处理器平台上,以采用改进的支持多核的轻量级操作系统进行仿真。
由于采用了轻量级操作系统,那么每个功能都可以按照类似真实产品的软件操作去使用,来建立多线程的复杂场景。并且,由于将操作系统移植到了多核处理器(例如dualcore处理器),那么这些线程能够在2个核同时运行,操作系统根据负载自动去处理各个线程。
传统的仿真方式是每个模块有自己的仿真case测试例,由对应的软件代码控制。在操作系统里,每一个case为一个线程。例如针对一个视频播放场景,可以在操作系统里创建多个线程。具体线程如下:
0x10:解码线程,负责管理芯片上的硬件解码器;
0x11:SD卡读数据线程,负责从SD卡读取视频原始码流;
0x12:显示器显示线程,负责在LCD上显示图像;
0x13:图像后处理线程:
0x14:GPU操作线程等线程
系统本身还包含若干操作系统的默认线程。
有了接近真实的视频播放场景,可以在复杂环境下,检查多个硬件模块同时工作,如上面例子中,硬件解码器、SD读卡器、显示模组同时工作,数据访问操作多,处理器调度多个中断,每个线程可能在core1执行也可能在core0执行。在上述场景中验证,来发现模块配合时是否存在问题、以及硬件、软件之间配合是否存在问题。
步骤12,运行所述多线程,对所述多核系统级芯片进行仿真验证。
所述轻量级操作系统可以为US/OS-II操作系统。US/OS-II的操作系统简单,代码量小,具有多线程调度能力,运行时占用的仿真时间很少,适合于在仿真平台使用。
US/OS-II本身不支持多核平台,例如ARMCortex-A9多核,因此,所述为所述多核系统级芯片的每一个处理模块建立一个线程的步骤之前,多核系统级芯片的验证方法还包括:
步骤10,在多核系统级芯片的平台的轻量级操作系统中,将多核系统级芯片的多核进行同步。
所述步骤10包括:
在所述轻量级操作系统的临界区代码入口处,关掉中断;
获取所述轻量级操作系统的原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述临界区代码时,释放所述原子锁,并打开所述中断。
也就是说,US/OS-II中有一类代码叫做criticalsection临界区代码,即执行过程中不能被中断的代码。多核移植时,需要修改这部分代码,增加额外的核间同步。即在criticalsection代码入口,关中断,然后获取原子锁,如果成功获取,则继续后继操作,如果没有成功获取,则等待,然后继续尝试获取,直到成功。在退出criticalsection代码时,释放原子锁,开中断。
#defineOS_ENTER_CRITICAL(){cpu_sr=OS_CPU_SR_Save();\
Get_semaphore(&irq_mutex);}
#defineOS_EXIT_CRITICAL()
{release_semaphore(&irq_mutex);OS_CPU_SR_Restore(cpu_sr);}
可选的,所述步骤10还包括:
在所述轻量级操作系统的OSCtxSw(线程内容交换)函数的入口处占用原子锁;
在所述轻量级操作系统的OSCtxSw函数的出口释放所述原子锁。
也就是说,在操作系统OSCtxSw函数的出口也要增加释放原子锁的操作,防止操作系统在多核移植后死锁。例如,release_semaphore(&irq_mutex)。
中断处理也要增加原子锁操作,来进行核间同步。因此,所述步骤10还包括:
在所述轻量级操作系统的中断入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述中断时,释放所述原子锁。
US/OS-II不支持内存管理,需要增加内存管理。双核时,需要增加内存管理的同步机制,在每个内存管理函数入口,获取原子锁,成功则继续后面操作,不成功则继续尝试获取,直到知道取得,来实现多核之间的同步。
可选的,所述步骤10还包括:
在所述轻量级操作系统的每个内存管理函数入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在所述内存管理函数出口,释放所述原子锁。
可选的,步骤10还包括:
将所述操作系统的Os_sys.ctimer(操作系统的系统文件的定时器)中断由所述多核系统级芯片的其中一个核执行;也就是说,将Os_sys.ctimer中断修改成可以给core0和core1。
或者,所述将多核系统级芯片的多核进行同步的步骤还包括:
修改所述操作系统的相应字段以支持NEON处理器。具体为:修改操作系统如下对应字段:
Inc/os_cfg.h#defineOS_TASK_CREATE_EXT_EN1
Port/os_cpu_a.s新增加OS_CPU_FP_SAVE,OS_CPU_FP_Restore的声明和实现
Port/os_cpu.h#defineOS_CPU_FPU_EN1。
另一方面,如图2所示,为本发明所述的一种多核系统级芯片的验证装置,包括:
建立模块21,在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
运行模块22,运行所述多线程,对所述多核系统级芯片进行仿真验证。
所述的多核系统级芯片的验证装置,还包括:
同步模块23,将多核系统级芯片的多核进行同步。
本发明提供一种基于轻量级操作系统的多核SOC芯片仿真平台,移植uc/os-2到多核平台,将此轻量级操作系统应用于多核平台仿真,满足多核平台仿真时的调度和OS灵活性的需求。在仿真验证阶段,引入轻量级操作系统(例如us/os-II,默认支持单核心处理器),轻量级操作系统的软件开销低,不会增加太多的仿真时间,具备线程调度、中断管理等功能,因此在调度和中断管理上很接近复杂操作系统(例如Android)。
本发明具有以下有益效果:
通过移植US/OS-II操作系统,到支持多核,将US/OS-II操作系统引入到ARM多核处理器芯片的仿真环境中,从而提高了仿真验证的真实度、全面性和复杂性,解决了多核SOC仿真与实际应用的操作系统调度方案不同带来的不确定性问题,有助于在仿真阶段制造复杂场景,在仿真阶段尽早发现系统级、模块间配合、软硬件协同等问题。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种多核系统级芯片的验证方法,其特征在于,包括:
在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
运行所述多线程,对所述多核系统级芯片进行仿真验证;
所述为所述多核系统级芯片的每一个处理模块建立一个线程的步骤之前,还包括:将多核系统级芯片的多核进行同步;
所述将多核系统级芯片的多核进行同步的步骤包括:
在所述轻量级操作系统的临界区代码入口处,关掉中断;
获取所述轻量级操作系统的原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述临界区代码时,释放所述原子锁,并打开所述中断。
2.根据权利要求1所述的多核系统级芯片的验证方法,其特征在于,所述轻量级操作系统为UC/OS-II操作系统。
3.根据权利要求1所述的多核系统级芯片的验证方法,其特征在于,所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的OSCtxSw线程内容交换函数的入口处占用原子锁;
在所述轻量级操作系统的OSCtxSw线程内容交换函数的出口释放所述原子锁。
4.根据权利要求1所述的多核系统级芯片的验证方法,其特征在于,所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的中断入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在退出所述中断时,释放所述原子锁。
5.根据权利要求1所述的多核系统级芯片的验证方法,其特征在于,所述将多核系统级芯片的多核进行同步的步骤还包括:
在所述轻量级操作系统的每个内存管理函数入口处,读取原子锁的状态;
如果所述原子锁的状态为空闲,则占用所述原子锁;
否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;
在所述内存管理函数出口,释放所述原子锁。
6.根据权利要求1所述的多核系统级芯片的验证方法,其特征在于,所述将多核系统级芯片的多核进行同步的步骤还包括:
将所述操作系统的Os_sys.c操作系统的系统文件的定时器中断由所述多核系统级芯片的其中一个核执行;或者
修改所述操作系统的相应字段以支持NEON处理器。
7.一种多核系统级芯片的验证装置,其特征在于,包括:
建立模块,在多核系统级芯片的平台的轻量级操作系统中,为所述多核系统级芯片的每一个处理模块建立一个线程,形成多线程;
运行模块,运行所述多线程,对所述多核系统级芯片进行仿真验证;
同步模块,将多核系统级芯片的多核进行同步;
所述同步模块具体用于在所述轻量级操作系统的临界区代码入口处,关掉中断;获取所述轻量级操作系统的原子锁的状态;如果所述原子锁的状态为空闲,则占用所述原子锁;否则,等待一预定时长后,判断所述原子锁的状态是否为空闲,直到所述原子锁的状态为空闲;在退出所述临界区代码时,释放所述原子锁,并打开所述中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131817.8A CN103218251B (zh) | 2013-04-16 | 2013-04-16 | 多核系统级芯片的验证方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131817.8A CN103218251B (zh) | 2013-04-16 | 2013-04-16 | 多核系统级芯片的验证方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218251A CN103218251A (zh) | 2013-07-24 |
CN103218251B true CN103218251B (zh) | 2016-05-18 |
Family
ID=48816076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310131817.8A Expired - Fee Related CN103218251B (zh) | 2013-04-16 | 2013-04-16 | 多核系统级芯片的验证方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103218251B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984350B (zh) * | 2017-06-01 | 2023-06-27 | 龙芯中科技术股份有限公司 | 一种中断处理功能验证系统和方法 |
CN108764037B (zh) * | 2018-04-24 | 2021-12-24 | 石狮市森科智能科技有限公司 | 一种基于ARM Cotex-A系列平台的人脸检测实现方法 |
CN112363752B (zh) * | 2020-11-11 | 2023-11-03 | 海光信息技术股份有限公司 | 基于可配置的操作系统的芯片验证方法及其设备 |
CN115248998B (zh) * | 2022-09-22 | 2023-01-03 | 济南新语软件科技有限公司 | 一种SoC芯片分布式仿真验证平台和方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278293A (zh) * | 2005-09-21 | 2008-10-01 | 英特尔公司 | 多处理器系统的性能仿真 |
CN201497980U (zh) * | 2009-09-02 | 2010-06-02 | 山东超越数控电子有限公司 | 多核仿真计算机 |
-
2013
- 2013-04-16 CN CN201310131817.8A patent/CN103218251B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278293A (zh) * | 2005-09-21 | 2008-10-01 | 英特尔公司 | 多处理器系统的性能仿真 |
CN201497980U (zh) * | 2009-09-02 | 2010-06-02 | 山东超越数控电子有限公司 | 多核仿真计算机 |
Non-Patent Citations (3)
Title |
---|
uC/OS-II对SoC验证支持技术的研究;闫效莺;《自动化技术与应用》;20101231;第29卷(第7期);第23-25,38页 * |
基于uC/OS-II的多种调度机制的嵌入式系统设计;汪习兵等;《科学技术与工程》;20071031;第7卷(第19期);全文 * |
基于uCOS-II的SoC协同设计和验证;强亚东等;《航空计算技术》;20080531;第38卷(第3期);第115-118页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103218251A (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105446795B (zh) | 虚拟机操作中的并行化 | |
CN103218251B (zh) | 多核系统级芯片的验证方法和装置 | |
US9152474B2 (en) | Context aware synchronization using context and input parameter objects associated with a mutual exclusion lock | |
US8843910B1 (en) | Identifying a set of functionally distinct reorderings in a multithreaded program | |
CN102279766B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
CN102681937B (zh) | 一种缓存一致性协议正确性验证方法 | |
CN102279768B (zh) | 仿真装置以及仿真方法 | |
US8296119B2 (en) | Saving and restarting discrete event simulations | |
CN101923369A (zh) | 基板管理控制器时间管理系统及方法 | |
CN104063295B (zh) | 一种多核操作系统可重构容错启动方法 | |
CN102984124A (zh) | 一种将客户端游戏程序快速植入浏览器的方法及系统 | |
CN108459906B (zh) | 一种vcpu线程的调度方法及装置 | |
CN101719116B (zh) | 基于异常处理的事务存储访问机制的实现方法及所用系统 | |
CN109783239B (zh) | SystemC仿真调度核的多线程优化方法、系统及介质 | |
CN104008014A (zh) | 多核心处理器及其相关控制方法与电脑系统 | |
CN202030403U (zh) | 电梯快速调试装置 | |
CN102968319A (zh) | VxWorks映像的加载方法 | |
US8881106B2 (en) | Debugging parallel software using speculatively executed code sequences in a multiple core environment | |
CN102096607B (zh) | 微处理器及其除错方法 | |
CN102241348A (zh) | 电梯快速调试装置 | |
CN106033368A (zh) | 一种多核虚拟机确定性重演的方法 | |
CN110543395B (zh) | 验证方法、装置以及相关产品 | |
CN109840137A (zh) | 一种操作系统移植方法和装置 | |
CN100375023C (zh) | 自动改变计算机启动顺序的实现方法 | |
US11061654B1 (en) | Synchronization of concurrent computation engines |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160518 |
|
CF01 | Termination of patent right due to non-payment of annual fee |