摘 要: 随着SoC设计规模的日益增大,结构逐渐复杂,仿真验证已经成为Soc设计过程中重要的环节,其所需时间往往成为整个设计周期的瓶颈,因而研究和应用能够加快验证仿真速度的技术变得愈发重要。Synopsys公司的仿真工具VCS所提供的多核技术就是利用目前计算机所拥有的多个处理器核并行工作,以达到对仿真速度的提升。通过在实际项目中分析和使用多核技术中的设计级并行仿真方法,证明了该多核技术的可行性和有效性。
关键词: SoC验证; VCS; 多核技术; 设计级并行
Research and application of multi?core technology in SoC verification
LIU Rui, SHAO Zhi?yong, KANG Chun?lei, LI Bin
(Verisilicon Inc, Shanghai 201203, China)
Abstract: With the increasing enlargement of SoC design scale and the gradual complexity of its structure, the verification simulation has become an important part of the SoC design process, and its required time often becomes a bottleneck of the entire design cycle, so the research and application of the technology that can speed up the simulation verification is imperative. The multi?core technology offered by Synopsys Company’s simulation tool VCS makes the multiple processors working in parallel to achieve the lifting of the simulation speed. The feasibility and effectiveness of the multi?core technology was proved by analysis in actual project and the design level parallelism (DLP) method which is one of the multi?core technologies.
Keywords: SoC verification; VCS; multi?core technology; design level parallelism
0 引 言
近年来,IC设计随着SoC规模的不断扩大,验证在整个设计流程中所占的比重也越来越大,其所需时间已经占到整个设计周期的70%以上[1?3]。而对于规模达数百万门级,时钟频率高达千兆赫兹的集成电路的仿真往往需要很长的时间,因此这一过程也成为设计流程中的瓶颈,制约着整个项目的实际工期[4?6]。如何提高仿真速度以便在有限的时间内覆盖更多的功能测试点,已经成为一项值得研究的课题。
Synopsys公司的仿真工具VCS提供的多核技术是将仿真过程中的不同部分分配到服务器的多个处理器单元上并行工作,从而达到加速仿真的目的[7]。目前,该多核技术提供了两种模式:应用级并行方法ALP(Application Level Parallelism)和设计级并行方法DLP(Design Level Parallelism)[8]。
本文主要研究了DLP技术的使用方法,并且对其在实际项目中带来的仿真速度提升进行了分析。
1 DLP多核技术的介绍
设计级并行方法DLP是将当前所仿真的对象分割成多个部分,包括一个主模块(Master)和多个从模块(Slave)。其中,每个从模块(Slave)之间需要保持相互的独立性,不能存在过多的信号交互,尤其不能出现时钟信号的交互[9]。
通过将这些分割开的部分一一对应到服务器上的各个处理器核上面并行工作,仿真时间可以得到不同程度的缩短。
1.1 DLP技术的使用条件
DLP技术并不是适用于所有的设计类型,在使用DLP技术之前,必须首先判断所验证的设计是否符合下述的使用准则:
(1) 必须分割出至少两个Slave;
(2) 每一个Slave所消耗的时间需要占整个仿真时间的10%以上;
(3) 所有Slave消耗时间的总和需要占整个仿真时间的50%以上;
(4) 保证验证环境所带来的时间消耗尽可能小。
VCS提供了用于分析性能的Profile工具,该工具可以在仿真过程中生成设计中各个模块所占用时间的报告,通过对报告的分析来决定是否可以使用DLP技术以及确定对设计进行分割的方法[10]。 使用Profile工具的具体方法如下所示:
(1) 在VCS编译选项中加入“?simprofile”选项;
(2) 在VCS仿真选项中加入“?simprofile time”选项。
在仿真运行结束后会在当前目录下自动生成名为“profileReport.html”的报告,选择基于模块的视图,就可以看到整个设计中各个模块在仿真过程中所消耗的时间。
在确认所验证的设计可以使用DLP技术后,VCS提供了两种方法来对设计进行分割,一种是自动分割方法,另一种是手动分割方法。这里推荐使用手动分割的方法,因为项目工程师更加了解自己当前的设计,知道如何分割更加的合理,而工具提供的自动分割方法可以作为参考。
对于自动分割方法的使用,只需在VCS编译时加入“?parallel+autopart=N”的选项,其中,N是分割后Slave的个数。如果当前设计适合使用DLP技术,那么VCS将会在当前目录下生成名为“autopart.cfg”的分割配置文件,而如果当前设计并不适合使用多核技术,那么VCS将会生成名为“autopartFail.txt”的文件来说明分割失败的原因。
对于手动分割方法的使用,只需在VCS编译时加入“?parallel+design=part.cfg”的选项,其中,“part.cfg”是分割配置文件。该配置文件的具体语法规则如下:
partition {hierarchical_name(module_identifier),...} ;
其中:“partition”是关键词,代表分割出的一个Slave;“hierarchical_name”是该Slave在整个设计中的层级路径;“module_identifier”是该Slave对应的模块定义名字,该配置语句的个数也就是分割后Slave的个数。这里需要注意的是,可以将设计中的多个模块分割在同一个Slave部分中,只需要在配置语句中以逗号隔开这些模块即可。
2 DLP多核技术的应用
本文通过在实际项目使用DLP多核技术,成功地缩减了仿真时间,保证了整个项目的验证工作能够高效顺利地完成。
2.1 项目介绍
本文所验证的设计属于多核类型,主要是由6个Core电路和其他控制电路构成,其系统框图如图 1所示。
该设计的数据流过程为:芯片通过SPI协议接收寄存器配置信息和工作任务,主控电路将这些任务分配给Core电路进行计算,Core电路通过一系列的计算过程将最终结果反馈给主控电路。
图1 验证对象的系统框图
通过对验证对象的典型应用进行仿真,并且使用Profile工具统计各个模块在仿真过程所消耗的时间,可以得到如图 2所示的结果。
从图中可以看到,6个Core电路占用了绝大部分的仿真时间(79.70%),而每一个Core电路分别占用的仿真时间都在10%以上,符合DLP技术的使用条件。
图2 验证对象典型应用的时间消耗图
2.2 实验结果
为了更好地说明DLP技术对仿真速度的提升,本文选取了3个验证对象的典型应用进行实验,在每一种应用下,分别进行传统的单核串行仿真和DLP多核并行仿真,并且采用如表 1所示的3种配置文件对验证对象进行分割。
2.2.1 工作量和工作时刻相同
在该场景中,6个Core电路拥有相同的工作量,并且开始工作的时刻也相同,这是该设计在实际应用中最为常见的情况。通过仿真实验,得到了在不同配置条件下运行所需要的时间,如表2所示。
表1 DLP技术的分割配置文件
表2 工作量和工作时刻相同的仿真运行时间
2.2.2 工作量不同
在该场景中只有前3个Core电路被分配有工作任务,而另外3个Core电路并不需要启动。这种情况得到的仿真结果如表 3所示。
表3 工作量不同的仿真运行时间
从表3中可以看出,使用不同的分割配置文件,DLP技术可以为仿真速度带来21%~66%不等的提升。与第一种应用场景相比,此处的性能提升有所减少,这是因为有一半的Core电路不需要工作,而将它们单独分割出来放到某个CPU核运行仿真并不会带来很多速度上的优化。
2.2.3 工作时刻不同
在该场景中,6个Core电路拥有相同的工作量,但是每个Core电路开始工作的时刻不同,它们是顺序地依次打开。这种情况得到的仿真结果如表 4所示。
表4 工作时刻不同的仿真运行时间
从表4中可以看出,DLP技术在不同的分割配置文件情况下为仿真速度带来最高67%的提升,可以为仿真工作节省不少的时间。由于每个Core电路开始工作的时刻存在一定的延迟,在整个仿真过程中的某一些时间段,并不是所有的Core电路都在并行的运算,所以该场景性能提升的效果也略低于第一种情况下的数值。
3 结 语
综上所述,本文重点研究了VCS仿真工具所提供的DLP多核技术,包括其使用条件和使用方法。通过在实际项目中的应用和分析,对于符合DLP技术使用条件的电路设计,该并行技术相较于传统的单核串行仿真,可以大幅地缩减仿真运行时间,有效地提高验证工作的效率。因此,多核技术必将成为SoC验证工作中的一个重要发展方向。
参考文献
[4] 邓爱国.基于验证方法学的IC验证平台研究[D].武汉:武汉邮电科学研究院,2009.
[5] PUGH Richard.SoC验证走出实验室良机已到[J].中国集成电路,2014(3):36?37.
[6] 汪洋,耿相铭.SoC验证平台的联合架构设计[J].信息技术,2013(7):75?79.
[7] 代君利.面向多核技术的新一代验证平台[J].中国电子商情:基础电子,2009(5):29?30.
[9] Synopsys. VCS/VCSi user guide [M]. USA: Synopsys, 2014.