使用先进技术来加速SoC验证

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:hoooopy
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:近年来,由于设计复杂度的增长,对于验证提出了更高的要求。验证环境变得越来越大,越来越复杂,设计和验证的双重压力导致仿真变得越来越慢。所有验证/仿真的速度已经成为当前SOC设计进程中的重大挑战。本文网络版地址:http://www.eepw.com.cn/article/192738.htm
  关键词:SoC;Synopsys;验证
  DOI: 10.3969/j.issn.1005-5517.2013.12.013
  在我们的项目中,我们使用Synopsys的验证flow以及近年来Synopsys提供的新的方法/工具,比如性能分析工具来分析仿真瓶颈,使用分块编译来加速编译,使用并行多核技术来加速编译/运行。使用UVM来增加环境的可复用性,等等,这些技术/特性的引入都大幅度加速了我们的仿真速度并减少了仿真时间。
  我们的项目是GPU的项目,对于仿真性能有较高的要求,所以在项目中希望使用尽可能多的新技术来缩短仿真时间以及加速验证。
  我们的验证环境使用UVM标准库来搭建的。验证环境如图1所示。
  使用了Synopsys公司的VCS来作为我们的仿真工具。
  工具版本:VCS 2012.09-SP1,Verdi 2013.04
  硬件环境如表1所示。
  加速编译的方法
  随着电路规模的不断变大,编译时间也成为了仿真过程中重要因素,如何加快/重用编译数据库,是加速整个仿真过程不可缺少的部分。VCS提供了很多好的技术来加速编译过程。
  并行编译
  当前基本上我们的服务器都能提供多核支持,并行编译选项可以使用服务器的多核来提供更快的并行处理,来快速编译生成数据库。VCS并行编译的选项如下:
  -j[no_of_processes]
  比如 vcs –j4 ?,注意no_of_ processes的数目不要超过实际可以提供的物理核数目。
  增量编译
  在编译过程中,VCS会创建设计/验证的层次结构,当你重新编译的时候,VCS只会就那些更改的设计单元进行重新编译,这样可以缩短编译时间。现在增量编译选项已经成为VCS的默认选项。
  分区编译 (Partition Compile)
  分区编译是VCS提供的一个比较新的特性。这个特性可以让我们把设计/验证中的实例/模块分成不同的大得区块来编译。这样如果之后只对其中一部分区块相关的文件进行了修改,那么可以重用之前分区编译的数据库来减少其它区块编译的时间,只对修改的区块进行重新编译即可。同时针对验证环境中的package,比如像UVM标准库或者一些算法库,分区编译也可以提前把它们分块编译好,然后这样可以加速验证环境的编译速度。
  在仿真过程中,运行的时间以及内存消耗是单次仿真的主要瓶颈,因此本文会关注在运行过程中如何提升性能,包括如何找到运行过程的瓶颈以及使用多核技术来加速仿真。
  运行性能分析工具
  VCS提供了用于分析性能的Profile工具Simprofile,使用在仿真过程中生成时间/内存消耗的报告,然后可以通过对于报告的分析来找到限制当前仿真性能的瓶颈。使用方式:
  编译:%VCS –simprofile –lca –f
  flelist.f ?
  运行:%simv –simprofle time|mem
  一般在运行后会自动生成名为simprofile_dir的报告目录,也可以后处理生成报告:
  %profrpt –output_dir simprofle_dir–view time_all|mem_all
  Simprofile会默认生成基于HTML的报告,然后可以进行选择查看相关的性能选项(支持模块/功能/DPI/ PLI/约束/覆盖率等),同时支持对多次仿真的报告进行比较。
  多核仿真技术
  VCS提供了多核仿真技术用于使用服务器的物理多核来加速仿真。使用多核技术可以把一次仿真的不同部分分配到多个物理运算单元上以达到加速仿真的目的。现在提供了两种多核模式:应用级并行技术(ALP)和设计级并行技术(DLP),ALP/DLP以及二者的组合通过多核CPU来优化仿真进程。
  应用级多核技术(ALP)
  应用级多核技术(ALP)是把按照应用把验证的不同部分(Testbench、SystemVerilog断言、覆盖率统计、波形保存等等)放到多个处理核上去做并行运行。
  例如:在一个4核服务器上我们可以把覆盖率统计放到第一个核上,把断言检测放到第二个核上,把波形保存放到第三个核上,剩下的仿真放到最后一个核上。结果会看到仿真性能可以得到很大提升。表1是ALP支持的开关参数以及推荐的使用示例
  如果VCS使用了ALP+fsdb多核(+mtfsdb),那么会在控制台看到如下打印:
  *Novas* : Multi-Thread VCS dumping is enabled
  同时Verdi3自动支持对FSDB进行并行保存,如果使能了并行保存,那么会有如下信息:
  *Novas* : Enable parallel dumping
  设计级多核技术(DLP)
  DLP允许我们可以把一个大的设计分成多个区块,然后把不同的区块放入不同的计算核去运行。DLP的一般会根据profiler的报告结果以及设计部件之间的相关性分析来做划分。把划分写入一个配置文件中,然后把这个配置文件读入VCS进行仿真,比如:
  %vcs test.v–parallel+design=partition_cfg.cfg   同时DLP还支持自动分区划分。考虑到DLP的适用情况以及进度,我们的项目上暂时没有使用,会在后继的项目中进行尝试。
  其他进行性能加速的模式
  Debug参数
  在影响仿真的性能参数中,文件I/O是占很大比重的一部分,所以对于性能的提升,可以从减少磁盘I/O读取来入手,比较多的磁盘I/O访问操作就是波形保存的动作。
  (1)尽量只保存需要的层次结构的波形而不要总是保存所有芯片的波形
  (a)FSDB波形保存
  $fsdbDumpvars(1, tb_top);
  $fsdbDumpvars(2, tb_top.design_ inst);
  (b)VPD波形保存
  $vcdpluson (level|"LVL=integer",sco pe*,signal*);
  (2)可以指定波形保存的时间来进行波形保存
  (a)在VCS运行时参数行进行指定(以FSDB为例)
  +fsdb+dumpon+time[+htime ]
  +fsdb+dumpof+time[+htime]
  (b)在验证环境中进行指定(以VPD为例)
  $vcdpluson; // Enable Dumping
  #5 $vcdplusof; //Disable Dumping afer 5ns
  为了能找到最适合我们验证环境的性能仿真模式(包括编译、执行和仿真),以使得我们能得到最大的性能提升增益,我们定义了三种场景模式进行测试,三种模式是:不保存波形、保存FSDB波形和保存VPD波形。然后每种模式下我们还会分为做覆盖率收集和不做覆盖率收集两种情况。
  在模式1 (不保存波形中)我们有四个基础场景,然后针对着四个基础场景,来进行了如下的组合,编译:是否开启快速编译,运行是否开启debug_all/debug_pp,是非开启覆盖率ALP,共扩展运行为24个场景。
  在模式2(保存vpd波形)针对两个基础场景,选择是否开启和模式1类似的参数,同时还选择是否进行vpd波形ALP,总共运行16个场景。
  模式3(保存fsdb波形)针对两个基础场景,在进行和模式2类似的组合之后还组合了是使用verdi3进行波形并行保存还是FSDB ALP,用于比较二者的性能差别。
  模式1下各场景仿真性能比较
  模式1下的性能比较如表3所示,从表3的运行结果可以看到快速编译有10%~40%的性能提升,多核技术的使用有最多20+%的速度提升,使用了性能参数之后整体仿真有最大20%的性能提升。
  模式2下各场景仿真性能比较
  在模式2下的各场景性能比较如表4所示。
  (1)不做覆盖率分析
  快速编译会有最多2倍左右的编译时间提升,并行VPD保存会有最多20%的仿真时间提升。对于内存空间最多有1.5倍的虚拟内存空间减少以及3倍的memory空间减少。
  (2)做覆盖率分析
  快速编译会有大概2倍左右的编译时间提升,就总的仿真时间,大概提升1%左右。
  多核并行VPD保存以及并行覆盖率分析对于正常用例仿真时间有1%~9%的提升,会有2倍~3倍的内存使用减少。
  模式3各场景仿真性能比较
  在开启FSDB波形保存的场景三,性能比较如表5所示。
  (1)关闭覆盖率分析
  Verdi3的并行开关比ALP的并行保存快2%左右,二者性能基本相同。快速编译会有2倍以上的编译时间减少,总仿真时间基本相同。并行保存会带来30%+的仿真时间减少。
  (2)开启覆盖率分析
  从在项目中的结果来看,使用快速编译选项可以带来最大2倍的编译时间提升。当我们运行回归测试时,如果不做波形保存,快速编译选项是很好的选择。并行多核技术可以对于运行时间给与很大的性能提升,不管是进行VPD波形保存还是FSDB波形保存,使用ALP技术都能带来20%以上的性能提升,性能提升显著。
  另外基于不同的验证阶段,建议使用不同调试粒度的仿真参数,也可以节省很多的仿真时间/内存消耗。后继我们会考虑使用DLP技术以及一些更新的有关performance的工具去尝试对性能进行进一步的优化。
其他文献
铁路运输代理业务与运输主业在2001年实行了企业分设、人员分开、财务分账的"三分开"工作,正逐步迈入规范发展的道路.
增加农民收入是当前我国政府面临的最大问题之一.本文在对罗陂乡黄栀子发展的个案调查基础上,分析了落后地区农业艰辛起步发展的原因,对于如何发展特色产业,增加农民收入,提
我国现行铁路冷藏货物运输内部清算办法及收入分配与普通货物运输实施同样清算流程和清算系数,未考虑冷藏运输高成本的特殊性.因此,在现行管理体制下,冷藏运输的清算改革,应
Microchip(美国微芯科技公司)日前宣布,推出全新单片机(MCU)系列——PIC24FJ128GC010。该系列是一款集成了一个完整模拟信号链的模拟片上系统,其中包括Microchip有史以来首个片上高精度16位ADC及10 Msps的12位ADC;还有一个DAC、两个运算放大器(运放),并具备能够延长便携式医疗和工业应用电池寿命的超低功耗技术(XLP)。  这种模拟集成和低功耗的组合降低了
20世纪末发达国家以信息系统为基础的人工智能已具有使用价值,纷纷用于铁路列车自动控制系统.多智能体技术包括车站智能体和车辆智能体,通过设立与现有铁路局、铁路分局相对
对柳州铁路局列尾装置取代守车后的实际减员人数及相应节省的支出进行了详细计算 ;分析了货物列车不挂守车后增效益、保安全和方便作业的优势 ;指出了在使用列尾装置中出现的
由于世界通信和消费电子,尤其是手机和移动产品需求殷切,模拟电路仍是集成电路市场上增长较稳、产品多样和利润较高的产品。据市调公司Databeans最新报告,2012年世界模拟电路销售值比上年增长3%,达438亿美元,并预期未来5年可望以较快速度发展,到2016年将超过600亿美元,2011~2016年5年间的年均增长率达7%以上。其中专用集成电路包括高性能电源电路和数据转换电路所占份额大,增长快,尽
2000年,天津铁路分局的货车使用费支出计划缺口达3 000万元.通过发挥调度所在运输指挥上的龙头作用,加强组织,责任下移,模拟内部市场机制,压缩了货车占用费,弥补了缺口,取得
随着列尾装置在全路的运用 ,在管理中不断地暴露出一些问题 ,对设备的正常运用带来一些影响。在分析原因后 ,提出铁路局或铁路分局建立独立的维修保障机构 ;设立使用保障、奖
Silicon Labs推出业界首款基于CMOSI艺的数字解决方案.可直接替换光电耦合隔离式栅极驱动器。新型Si826x隔离式栅极驱动器支持高达5kV隔离等级和10kV浪涌保护,