软硬件协同仿真——硬件加速
软硬件协同仿真——硬件加速
- 1. 仿真验证方法
- 1.1 软件仿真(Software Simulation)
- 1.2 协同模拟 (Co-Simulation)
- 1.3 协同仿真 (Co-Emulation)
- 1.4 三种仿真技术对比
- 2. 硬件加速实现方法
- 2.1 专用硬件Emulator
- 2.2 硬件加速方式
- 2.3 硬件加速实现方法
参考:
- 王宏伟,孙宇明,李铀,唐柳. 一种软件联合FPGA硬件仿真加速系统设计[C]//.2020中国航空工业技术装备工程协会年会论文集.[出版者不详],2020:114-117.DOI:10.26914/c.cnkihy.2020.036194.
- 蒋心祝. 软硬件协同仿真的自动化验证平台设计[D].西安电子科技大学,2019.DOI:10.27389/d.cnki.gxadu.2019.000734.
- 验证学院
- https://www.design-reuse.com/articles/21885/hardware-acceleration-hvl-testbench.html
- https://compas.cs.stonybrook.edu/projects/vm-hdl-cosim
1. 仿真验证方法
- 什么是仿真验证?
仿真即是借助于仿真工具(仿真器)来验证一个使用硬件描述语言性语言(Verilog/SystemVerilog/VHDL)建模的数字设计的功能正确性的过程。
1.1 软件仿真(Software Simulation)
软件仿真,即是使用Modelsim, Icarus, Verilator,VCS, Xceilum等仿真工具,对HDL建模的电路进行模拟仿真, 也是目前使用最多,最普遍的仿真技术
优势:可以查看电路中任何地方的信号
缺点:设计电路越复杂,仿真所需要的时间越长
1.2 协同模拟 (Co-Simulation)
使用硬件加速器协同进行加速,主要是验证部分和测试向量等都是在软件一侧的仿真上运行的,只有待测设计的代码在硬件上执行。
图2 来源https://compas.cs.stonybrook.edu/projects/vm-hdl-cosim
1.3 协同仿真 (Co-Emulation)
同样使用硬件加速器协同进行加速,与Co-Simulation
不同的是,Co-Emulation
分工明确,Software只负责验证平台中不包含时序的部分,Hardware负责验证平台中时序部分(产生时钟、其他部分?)以及待测设计部分。这样可以最大化的利用硬件加速器性能。
图3,来源https://www.edn.com/co-emulation-for-better-ic-testing/
1.4 三种仿真技术对比
表1 仿真验证技术对比表[1]^{[1]}[1]
比较项 | Software Simulation | Co-Simulation | Co-Emulation |
---|---|---|---|
普及度 | 高 | 较高 | 低 |
仿真速度 | 慢 | 明显提速 | 最大程度的提速 |
测试规模 | 小规模 | 大规模 | 超大规模 |
成本 | 低 | 较低 | 高 |
易用性 | 便于调试,结果直观,功能覆盖、断言等支持好 | DUT部分调试非常困难,需要修改测试向量以达到更高的覆盖率 | 提供便捷的调试特性 |
图4[5]图4^{[5]}图4[5]: 仿真时间对比
- RTL Simulation,即是纯软件仿真,Testbench和 DUT 都在仿真软件上运行,可以看到设计部分消耗了很多时间
- TB in SW, DUT in HW,即是Co-Simulation,Testbench 代码在软件中运行,将DUT加载到硬件上运行,相较于 RTL Simulation方案,Co-Simulation仅仅优化了DUT仿真所消耗的时间,同时增加了SW-HW之间的同步时间
- TBA( transaction-based acceleration) Method,即是Co-emulation
2. 硬件加速实现方法
2.1 专用硬件Emulator
emulation vs FPGA Prototyping
- emulation可以验证极大规模的设计, 如一个二十亿门的设计,使用专用emulator,会使用 100 多块板卡,每张板卡上若是 16 个验证单元,会需要超过 1600 块验证芯片单元,涉及到的芯片间切割、
布线、时序分析都是非常复杂的。而使用FPGA 原型能否实现该设计呢?如果能实现时间开销也能否承受呢? - FPGA原型一般用于小规模的芯片验证四颗以上切割、布线就很困难,且速度下降得很厉害
图5:https://www.electronicdesign.com/technologies/test-measurement/article/21800385/hardware-emulation-a-weapon-of-mass-verification
(来源[2])目前业界常使用的硬件仿真器:
- Synopsis 公司的 ZeBu, Zebu 基于 Xilinx FPGA
- Candence 公司的 Palladium, 基于专用处理器设计
- Mentor 公司的 Veloce, 基于专用处理器设计
- 其他基于FPGA的硬件Emulator
- Aldec
- Bluespec
- Cadence RPP
- Dini Group
- S2C
- HyperSilicon
2.2 硬件加速方式
- 基于信号的仿真加速
基于信号的仿真加速方式,主要思想是,将整个待测设计或是期望加速的待测设
计的一部分移植到硬件仿真器中,并将验证环境直接与待测设计相连。可综合的待测
设计部分被放到硬件仿真器中,验证环境与待测设计是基于信号级别相连的,数据会
串行通过高速通道。[2]^{[2]}[2] - 基于事务的仿真加速
基于事物的仿真加速方式, 可以更好地发挥硬件仿真器的性能,最小化了主机与硬件仿真器之间的数据,相比于基于信号的仿真加速。 因为在主机上运行的验证环境和在硬件仿真器上执行的待测设计是通过无时序的事物进行交互的,不再是基于周期精准的信号。[2]^{[2]}[2]
图6[2]^[2][2]: 硬件加速系统结构
2.3 硬件加速实现方法
图7[1]^{[1]}[1]:软硬件协同仿真系统结构框图
- 仿真软件
- 为FPGA硬件加速提供测试向量(测试激励)
- 提供Debug窗口,显示DUT输出向量
- 软硬件通信模块
软硬件通信模块是软件硬件协同仿真的核心部件,本质上应该还是目前常用的通信接口,如以太网,PCIE等(猜测,有待进一步确认)。- 硬件端实现(FPGA端):如使用PCIE物理接口,那么可以将FPGA中DUT的输出向量封装成PCIE数据包,通过PCIE接口将数据发送到软件端
- 软件端实现(PC端):使用C代码完成向电脑或服务器的PCIE端口发送/接收数据,可以通过SystemVerilog DPI-C接口调用该C代码函数,从而实现软硬件数据交换
- FPGA硬件加速模块
- 待测设计
- 时钟源
- 缓存DUT输出向量,发送至上位机(软件端)
- 缓存DUT测试向量,输送至待测设计
软硬件协同仿真——硬件加速相关推荐
- 哪一种验证方法最好?形式验证、硬件加速还是动态仿真?
本文转自:http://www.eetop.cn/blog/html/28/1561828-513396.html 关于最佳的验证方法,最近总能在各种文章中看到.这里希望以一些新的视角来看待这些问题. ...
- SDSoC软硬件协同设计流程系列——1.基于SDSoC的软硬件协同设计流程简介
基于SDSoC的软硬件协同设计流程简介 Software Define 的概念 近年来"Software Define"软件定义这个词持续火热,全球知名技术研究和咨询公司Gartn ...
- 基于Zynq的光流法软硬件协同设计与实现
基于Zynq的光流法软硬件协同实现 一. 前言 光流场(Optical Flow Field)[1]是指图像中所有像素点构成的一种二维(2D)瞬时速度场,其中的二维速度矢量是景物中可见点的三维速度矢量 ...
- 基于SDSoC的软硬件协同设计
文章目录 基于SDSoC的软硬件协同设计 一 基于SDSoC的软硬件协同设计流程简介 二 SDSoC使用 三 SDS指令简介 SDS指令简介 SDS Pragma组合 四 搭建SDSoC Platfo ...
- 广告深度学习计算:异构硬件加速实践
丨目录: - 前沿 1. 算力需求与供给 1.1 算力需求:模型复杂度 1.2 算力供给:异构硬件计算能力 1.3 问题与优化方法 2. 算法-系统-硬件协同性能优化 2.1 算法优化 2.2 系统优 ...
- 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)
Table of Contents 109.硬件卸载简介 110.网卡硬件卸载功能 111.DPDK软件接口 接收侧: 发送侧: 112.硬件与软件功能实现 113.VLAN硬件卸载 1. 收包时VL ...
- 找准边界,吃定安全 | 高性能硬件防御问题难解?硬件加速引擎闪亮登场
山石网科 A7600 智能下一代防火墙 高性能.高可靠.轻量化.更便捷 软件灵活性和硬件高效性的统一 [找准边界,吃定安全]往期回顾: 串联边界设备协同,便捷运营思维让安全更有效 流量剧增?看山石网 ...
- 共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
本文已在飞桨公众号发布,查看请戳链接: 共创软硬件协同生态:Graphcore IPU与百度飞桨的"联合提交"亮相MLPerf AI领域最负盛名的产业级基准测试榜单MLPerf T ...
- TISC—系统多学科协同仿真平台
德国TLK-Thermo GmbH公司的TISC是一款实现多学科物理协同仿真的平台工具,它提供了一个标准的协同仿真环境,支持本地.远程以及分布式仿真,能将各仿真客户端有效连接起来并进行同步和控制,被广 ...
- 嵌入式软硬件协同设计的过程
很多老嵌入式工程师可能还是感觉传统的设计方法用起来感觉顺手.毕竟用熟悉了谁也不愿意在接触一些比较陌生的设计方法.但在这个互联网快速发展的时代.知识的更新速度是很快的.所以需要我们不断的去学习新的知识. ...
最新文章
- mysql的表空间是否自动扩展_Oracle修改指定表空间为自动扩展
- fire.php,Fire PHP
- 宝塔服务器搞成虚拟主机,宝塔面板怎么配置虚拟主机
- NYOJ 625 笨蛋的难题(二)
- java EE map
- python 的笔记
- python长沙_长沙python
- Indeterminate ProgressBar
- JavaScript中实现深浅拷贝
- linux分区文件ext4和ext3,在Windows 下读取 Linux 的 ext3/ext4 格式分区 -Ext2Read和Ext2Fsd...
- 医院预约挂号小程序 开题报告(基于微信小程序毕业设计题目选题课题)
- 图像特征原理--HOG特征
- C++_GUARDED_BY 和EXCLUDES属性字
- 公认最好的鸿蒙系统,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- win10修改和隐藏系统输入法指示器
- 中考词汇测试软件,百词斩中考版
- 用网站代替p2p服务器,[视频]PURSUIT:互联网可摆脱对服务器的依赖 用P2P取代
- BGP协议学习笔记——BGP基础
- sja1000 c语言,基于51单片机SJA1000 CAN通讯实现
- 遇到困难,应该迎刃而上