emulator总结

在日常工作中会用到Cadence家的emulator仿真器palladium,正好有时间做个总结。

  1. 什么是硬件仿真器

做IC设计的人应该都知道软件仿真和FPGA原型验证,我们可以把硬件仿真器理解为这二者之间的产物,它同时具备二者的优点。

软件仿真(simulator)全面,支持UVM、assert、coverage收集、可以很方便的dump 波形来debug,但速度很慢,尤其是在做大分辨率图像处理的时候,一条case甚至可以跑一个礼拜,且相当耗内存,所以在debug一些大分辨率或者多帧之后才出现错误的case时如果只用仿真的话,效率就会很低。

FPGA原型验证(FPGA prototype verification)速度快,可以认为是待验证设计的低速版,是实实在在的芯片了,与待验证设计一起协同工作的其他部分都是工作在实际频率的,比如ddr、flash、phy等,但在debug时不是很方便需要用内嵌逻辑分析仪来抓取信号一点点排查问题,尤其是一些大型设计,单颗FPGA根本放不下,需要多颗通过PCIe级联,debug时更是灾难。

基于软件仿真和FPGA原型验证的不足,硬件仿真器就应运而生。Emulator是软件仿真的硬件化,但还不是真实的硬件,是个虚拟的世界。它通过厂商定制化的流程,将rtl映射到各自的硬件仿真平台上,可以像软件仿真一样dump全部的波形,dump的波形是fsdb格式直接可以用verdi打开查看。由于是映射到专门的硬件上,所以速度比软件仿真快很多。此外为满足不同的用户需求,emulator还提供多种模式,1)基于cycle级的软硬件联合仿真;2)基于事务级Transaction的软硬件联合仿真(Veloce叫TBX)3)基于ICE模式的,基本上重点使用后两种。ICE模式运行速度最快,接近于FPGA的运行模式,就是DUT和TB都可综合例化在硬件中,另外还可外接硬件作为激励源,比如PCIE、Ethernet、SATA等设备,通过SpeedBridge来解决真实硬件和Emulator的速度差问题。缺点也很明显,就是TB要是可综合的,或者使用向量模式,限制了其使用方式。

  1. 目前有哪些硬件仿真器

做EDA工具的三家巨头都有各自的emulator,Cadence Palladium(帕拉丁), Synopsys ZeBu, Mentor Veloce(韦洛切),但又有不同。Palladium有的系列使用定制化cpu有的是用FPGA、Zebu使用Xilinx V7 FPGA、Veloce使用定制化ASIC芯片等,在使用上也各有自己的一套流程,具体可以看对应的userguide。

  1. 帕拉丁的一些细节

帕拉丁Z1的实物图如下,采用了服务器刀片式机架,可以根据客户需求来扩容,支持资源共享,一般都是把这台机器放在固定机房,和服务器使用类似,比如公司不同site都可以远程访问,编译时不需在固定的服务器,只有在使用Emulator时,只需要用cadence提供的命令load bit即可,然后就可以用像使用FPGA一样来跑case,如果需要debug,设置好触发条件即可,然后dump 波形,上传波形,最后直接用verdi打开波形。

帕拉丁Z1使用cadence自己定制的超标量处理器,分配效率极高,像Z1的每一个机架上配有50W个这样的超标量处理器,最多可以扩展到16个机架,根据验证需要,每次可以指定某几个机架进行服务。这也就解释了为什么emulator和FPGA原型验证不同,它本质上是用一块处理器来仿真一小块设计的逻辑部分,将结果在处理器之间传递,然后成千上万的处理器集群并行工作,依次达到加速的目的。

目前帕拉丁Z2也已经推出,采用xilinx Virtex UltraScale+VU19P FPGA,具体详情可以查看cadence官网。

  1. 开发过程中遇到的问题

有时候在FPGA上会遇到一些bug,仿真不能复现,emulator也不能复现,毕竟只有FPGA原型验证才是真正意义上的电路,所以遇到些奇奇怪怪的问题也不足为奇,这个时候怎么办?我们通常是根据现象先猜,然后拉线来逐点排查,但是FPGA拉线又会遇到调试信号被优化的问题,有时候vivado、quartus综合结果不可靠还需要用synplify来综合,所以调试手段也是很值得研究的,后面再写。

  1. 总结
  1. Emulartor是介于软件仿真和FPGA原型验证之间的,具有二者的有点,速度快,方便调试;
  2. Emulator本质上是通过处理器集群来加速验证任务,并不是实际的电路,在于外设协调时,需要用速度适配器来进行转换,这也是为什么FPGA上的问题emulator有时候不能复现。
  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们在开发过程中使用模拟器设备时,可能会遇到“start debugging error by emulator device open”的错误。这个错误通常发生在我们尝试在模拟器设备上进行调试时。 首先,我们需要检查几个可能的原因。首先,确保您的模拟器设备已经正确安装并且可以正常工作。您可以尝试重新启动模拟器设备,以确保没有任何临时问题。另外,确保您的开发环境与模拟器设备的版本兼容。如果您的开发环境版本过低或过高,可能会导致无法正常调试。 其次,检查您的调试设置是否正确。您可以打开您的开发环境中的调试设置并确保已正确配置模拟器设备作为调试目标。一些开发环境也允许您选择将调试目标设置为实际的物理设备,这取决于您的需求。 另外,确保您的开发环境与模拟器设备之间建立了正确的连接。这可能需要您在开发环境中配置一些网络设置,以便能够与模拟器设备进行通信。 最后,如果以上解决方法都没有成功,请考虑尝试使用其他的开发环境或调试工具。有时,不同的工具可能会有不同的兼容性和性能。在尝试其他解决方案之前,您还可以尝试重新安装您的开发环境,以确保它没有任何损坏或错误。 总结来说,当我们遇到“start debugging error by emulator device open”错误时,我们应该首先检查设备和开发环境之间的兼容性,确保正确配置调试设置并建立正确的连接。如果问题仍然存在,可以尝试使用其他的开发环境或调试工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值