【DVCon-US-2020】基于UVM的集群级测试平台的硬件加速

简介: 【DVCon-US-2020】基于UVM的集群级测试平台的硬件加速

论文概述


 本文题目是 Hardware Acceleration for UVM based CLTs,作者是Intel和Synopsys的印度工程师,发表在DVCon2020上,提出了一种基于UVM的集群级测试平台(CLT)的硬件加速方法。




研究目的


 随着SoC设计复杂度的提升,完备验证变得越来越难。尤其是对于Cluster级别的仿真,仿真跑得是真慢啊,一个仿真要仿到天荒地老。是的,本文的目的:仿真加速。




新方法


方法提出


 由于emulation平台对UVM支持上的限制,基于emulation的加速方法不能直接应用于使用了UVM的CLT验证平台。通常在emulation平台上跑RTL及C++的验证平台。


 考虑到在IP / Sub-system / SoC级别已经基于UVM做了很多验证工作,复用之前的case需要用软件平台跑仿真, 我们承担不起Cluster级软件仿真的巨大耗时。想要跑得快,就需要用到emulation平台,就需要用C++把UVM那一套重新实现一遍,重复造轮子,费时费力还不一定能造好。怎么办?


 本文提出了一种兼容UVM和emulation的方法,稍微花个一两周改一改UVM的环境,用simulator和emulator进行软硬件协同仿真。对于较小的case,仿真速度有3~5倍的提升;对于较大的case,仿真速度能够提升20倍以上。


 新方法:simulator+emulator软硬件联合仿真。UVM部分在simulator上跑,RTL部分在emulator上跑。示意图如图1。


35bee40ab6084a0588320c126aed1e9c.png


图1 CLT setup in Simulator Accellerator



方法实现


 对原有环境的修改:


  1.    DUT coding方式要支持emulation。既有的部分RTL在simulation中是没问题的,但部分写法对emulation不友好,需要修改。(本文未举例,我没玩过emulation,不太清楚。)


  1.    确定哪些设计是要放在emulator上跑。一般是指定hierarchy,某hierarchy以下全部部署在emulator上跑,其他的放在simulator上。


  1.    在正式编译和仿真之前,确保完成以上加速更改后CLT在simulator上仍然是可行的。确保相关问题已经debug过且fix已经合入,不要等到我CLT上再发现低等bug,我这时间可耗不起。


  1.    simulator仿真验证差不多后,对应RTL就要作为model应用到加速平台啦。



 采用以上方法对功能进行验证后,大概能提速4、5倍,但这似乎还不够,需要进一步提升model的性能。之前的CLT在配置的时候是用于simulation的,多多少少对emulation不太友好,因此可以稍微修改以下, 进一步提升model性能:


  1.    优化HW/SW接口。simulator和emulator的软硬件接口中,存在一些“冗余”的port,导致了额外的软硬件同步开销,因子可以进一步清理这些port。这一步大概可以提升3倍性能。


  1.    在emulator中产生clock。在常见simulation环境的时候,往往是在软件这一侧生成clock然后传递到硬件(图2)。这样硬件在工作的时候,每次都会产生一个时钟同步时间,极大影响效率。因此,建议把生成clock的事情让emulator来做。


  1.    第2步中把clock生成放在emulator中,这就导致了一个新的问题,就是软件在用clock的时候需要跟硬件做同步,这同样会影响性能。因此,需要在硬件侧做些逻辑,把clock传到SW侧,来减少同步及其对性能的消弱(图3)。


ebe1421546984d0e995d52fdb3e1a195.png


图2 Clock setup in traditional simulation

bab8a2378e1e43e49afb3e6e036f0e27.png


图3 Clock setup in simulation acceleration




 这样一来,对于长时间的仿真而言,仿真加速大概有20倍。




讨论


 采用本文所述仿真加速的方法,能够提供波形、断点、单步调试、TB/DUT同步调试等debug能力,跟传统的simulation相差无几,仿真速度还快。


 这个方法也有缺点:


   simulation支持增量编译,放在emulation中就不支持增量编译了,改点东西就要全部编译;


   本方法采用了信号级加速,采用这种方法不需要对 CLT 环境进行任何类型的重新设计或更改,但同时引入了SW/HW port上信号同步的开销,使得仿真无法达到最大性能。为了进一步提升性能,可以采用事务级加速,利用事务器task/function来驱动DUT。事物级加速能够减少SW/HW的接口信号数量,从而减少同步开销。 事物级加速请移步另一篇文章 DVCon2020】以接口为中心的软硬件协同SoC验证仿真加速



 本文集UVM与emulation与一体,方法是个好方法,值得一试。






目录
相关文章
|
1月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
1月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
132 1
|
2月前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
77 2
|
1月前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
63 0
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
50 4
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
80 4
|
2月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
44 1
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
45 1
|
2月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
49 1
|
2月前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
25 0
下一篇
DataWorks