【DVCon-US-2020】采用先进 Save & Restore 技术加速仿真周转时间 (Simulation Turnaround Time)

简介: 【DVCon-US-2020】采用先进 Save & Restore 技术加速仿真周转时间 (Simulation Turnaround Time)

论文概述


本文题目 Saving and Restoring Simulation Methodology using UVM Factory Overriding to Reduce Simulation Turnaround Time,作者是三星电子的韩国工程师。


 本文提出并实现了一种动态SnR(save and restore)方法,能够加速仿真周转时间(simulation turnaround time)。



研究目的


热身两小时,上场一分钟


SoC仿真验证中,你是否苦恼于 初始化配置两小时,个人测试sequence运行一分钟 的现状?对于大型SoC而言,在运行我们写的test sequence之前,要进行繁杂耗时的boot、initialization、phy training过程(下文称common sequence),我们真正关心的test sequence跑起来可能几分钟就够了。


在case调试期间,每做一点case修改rerun的时候都要重复跑一遍common sequence,common sequence删还删不得,让热爱工作追求效率的我们心力憔悴。



原有优化方法局限多



加速仿真的方法有很多:


  •    simulation加速,这个方法就很多了。

   

  • 一是优化code、flow,但这个对优秀的验证工程师而言并不适用,除非你code、flow很烂,否则指望优化code获得的simulation提速效果都不是很明显。


  •        二是可以用save & store(下文称SnR)的方法跳过common sequence(图1是未采用SnR及采用SnR方法的验证Flow对比,图二是SnR Override示意图),但传统的SnR方法仅适用于case、TB固定情况下的rerun,且只能指定一个时间点进行SnR。一来能够指定的SnR数目有点少,二来SnR时间点不好把握,三来Save后要用来override的test sequence不能做任何修改,这还怎么玩?


       此外,simulation性能本身以每年10%的速度提升,这个跟SoC Size的发展速度比,还是不行。


   emulation。emulation很快,但emulator一是死贵,二是一般用在耗时极久的大场面的仿真上,小case开发过程中也不太方便频繁放到emulator去跑,怕被跑emulation的同学打。

1869444c29c24ad78d5c9e84bff3b1e3.png



图1 Proposed Workflows with SnR Methodology

4ceef459f6964b36a653f26a46d8590c.png


图2 Basic Concept of UVM Factory Override Mechanism




新方法


方法提出


本文提出一种新的SnR方法(图3)来缩减仿真周转时间,该方法仍然是基于UVM factory的override机制,采用该方法可以指定多个SnR的点,且在case、TB不稳定的时候仍然适用。该方法无需额外的硬件投资,经济实惠。


 当simulation跑到指定点之后把DUT、TB状态进行保存,称为snapshot。restore的时候,先编译自己修改后的test sequence,然后用simulator的tcl命令把旧的sequence override掉,最后把save的文件读进来,从执行save的时间点继续执行仿真。


本文的方法在初次运行的时候,执行多次save过程,restore的时候可以指定save point。有几点需要注意:restore的时候,指定的save point需要在test sequence开始执行的时刻之前。


97840a8aba7f493086d0435a44861272.png

图3 The Dynamic SnR Methodology




方法实现


Save


为了保存仿真现场,需要做以下三步:


  1.    saving_test.sv 中插入save point,save point插入位置在common sequence之后、test sequence之前,其间可以插入多个save point。本文是DPI-C调用do_save函数,函数参数是save point的名称。


  1.    do_save.c中实现do_save函数,进行simulation状态的保存。


  1.    simulation flow中开启SnR功能,指定save file的保存路径等。



 Save 的示意代码见图4。

6333596a108343788b6bfb93fd999fc4.png


Restore


  为了恢复仿真现场,需要做以下三步:


 

  1.    test sequence放在test_pkg.sv中。可以在base_sequence放common sequence,并从base_sequence派生出test sequence。为了实现sequence可修改的SnR机制,test sequence需要放在SV package中(Top Level),以在多个环境组件之间共享数据、参数等。SV package作为restore simulation的输入文件,在restore之前重新compile、elabrate这些test sequence。


  1.    uvm_factory.tcl中用test_sequence override base_sequence。为了实现override_by_type,test_sequence和base_sequence的type需要相同,这也是第一步test_sequence从base_sequence派生而来的原因。


  1.    simulation flow中指定配置参数,例如sv package、tcl command、start point、datebase name等。


 Restore的示意代码见图5。

582ea401f6f545218d55300f1cfdf6b7.png




实验结果


  本文设置了两组对比实验,一是有无SnR方法的仿真时间,二是不同的common sequence(Block-A with boot,Block-B with boot + PHY init)。


试验结果如下图(图6)所示。


fc6667331c5a4535aee459f1c22623a4.png


图6 试验结果



 从图中可见,仅有Boot的Blocak-A,采用本文SnR方法能够把TAT提升88%;


Boot+PHY init的Blocak-B,采用本文SnR方法能够把TAT提升97%




讨论


 方法挺好,实现起来不复杂,经济实惠,支持多save point,在case调试过程中也能使用,提升的速度也相当明显,能够大大加快case开发迭代速度。


 本方法做些改进,用在power-aware sim、gate-sim或regression中,省时间不说,还能省不少memory、licence、server资源。


 不错,推荐。





目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能
【博士每天一篇文献-模型】Self-organizing deep belief modular echo state network for time series
本文提出了一种自组织深度置信模块式回声状态网络(SDBMESN),通过结合深度置信网络和模块化回声状态网络,利用自组织机制动态调整网络结构,以提高时间序列预测的泛化能力。
13 2
|
2月前
|
算法
自适应PID控制器的simulink建模与仿真
本研究实现PID控制器参数(kp, ki, kd)的自适应调整,达成最优控制并展示参数收敛过程。MATLAB2022a环境下仿真结果显示,参数经调整后趋于稳定,控制器输出平滑,误差显著降低。自适应PID通过实时监测系统性能自动优化参数,有效应对不确定性,维持系统稳定及高性能。采用不同优化算法调整PID参数,确保最佳控制效果。
|
4月前
|
机器学习/深度学习 人工智能 NoSQL
人工智能平台PAI产品使用合集之save_summary_steps这个配置项我设置了值为50,为什么还是1000个step才记录一次summaries
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
4月前
|
传感器 存储 供应链
plant simulation物流系统仿真案例
plant simulation物流系统仿真案例
68 0
|
12月前
|
前端开发 芯片
【芯片前端】所以说,一直以来我理解的set_multicycle_path -hold都是错的?
【芯片前端】所以说,一直以来我理解的set_multicycle_path -hold都是错的?
131 0
[simulink] --- 模型生成嵌入式代码配置
[simulink] --- 模型生成嵌入式代码配置
170 0
[simulink] --- 模型生成嵌入式代码配置
|
机器学习/深度学习 自然语言处理 计算机视觉
【计算机视觉】MDETR - Modulated Detection for End-to-End Multi-Modal Understanding
对于图像模型,MDETR采用的是一个CNN backbone来提取视觉特征,然后加上二维的位置编码;对于语言模态,作者采用了一个预训练好的Transformer语言模型来生成与输入值相同大小的hidden state。然后作者采用了一个模态相关的Linear Projection将图像和文本特征映射到一个共享的embedding空间。 接着,将图像embedding和语言embedding进行concat,生成一个样本的图像和文本特征序列。这个序列特征首先被送入到一个Cross Encoder进行处理,后面的步骤就和DETR一样,设置Object Query用于预测目标框。
|
存储 数据采集 分布式计算
实时大数据处理real-time big data processing (RTDP)框架:挑战与解决方案
实时大数据处理real-time big data processing (RTDP)框架:挑战与解决方案
|
算法
m基于simulink的麦克纳姆轮Back-Stepping控制系统仿真
m基于simulink的麦克纳姆轮Back-Stepping控制系统仿真
176 0
|
算法
基于simulink的自适应PID控制器仿真
基于simulink的自适应PID控制器仿真
344 0
基于simulink的自适应PID控制器仿真