路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

如果仿真搞不定,那么模拟就一定行吗?

热度 4已有 2491 次阅读| 2018-2-4 14:50 |个人分类:验证前沿资讯|系统分类:芯片设计

路桑点评

“当我们发觉SoC系统越来越大的时候,我们转而求向其它验证手段,譬如FPGA和Emulator,但即便是模拟器也有它的短板所在。本文中的观点,针对日益复杂的SoC系统,如果只是单纯地将硬件RTL模型装载到模拟系统中,从速度和复杂性来看,都变得不可承受;如果考虑将验证环境和部分RTL模型都抽象分离到仿真工作站,而将其余代码搁置到模拟器,这种混合模拟的方向可能是降低复杂度的一种手段。然而需要注意的是,混合仿真中如何利用SCE-MI保持高速通信带宽仍然需要花大力气去考虑和实现。至于属于艺术级别门槛的另外一个话题,如何抽象模型,抽象系统的哪些性能特征,则又变得那么虚无缥缈,尤其对于复杂的系统,抽象就意味着失真。那么不想对核心参数失真,从哪儿抽取参数呢?有趣的是,人工智能和深度学习对于大量数据的分析成为了下一个抽象模型建立的可能解决方案。”



随着系统设计复杂度的稳步上升,对模拟技术的要求也越来越高。诸如车辆的自动驾驶技术以及其它复杂的系统,传统的模拟技术已经无法满足它们的需求,所以应该怎么办呢?

目前一种模拟技术的替代方案已经被谷歌,Uber,福特,通用,沃尔沃奥迪和其他拥有自动驾驶技术的公司使用:在道路上测试汽车行驶状况并收集相关的数据进行后续的分析。

Imperas Software的首席执行官Simon Davidmann表示:“自动驾驶是无法被模拟出来的,只能在现实中测试这些,因为我们无法模拟出数以亿计的事情。肯定有一个节点,在那之后事情的发展将无法被模拟,因为数据分析将变得非常复杂。一辆车可能有50个处理器正在运行,每一个处理器的运行速度也不相同。你可以对这50个处理器进行模拟,但那将变得非常复杂。因此你可以尝试着在现实世界中建立一个模型来模拟这个复杂的系统,如果你已经把模型做的足够好了,那你可以真正的去开车看看会发生什么,但是记得带上一个防撞头盔。”

随着自动驾驶技术不断向现实发展,这些复杂系统的验证和测试必须在多个层次上进行。

ARM公测的高级产品经理Neil Parris表示:“如果你想要一次性通过所有处理器来测试所有的软件,达到100%的准确率几乎是不可能的。你不可能让模拟器运行的足够快。也许你能够仿真一些东西,但仿真速度仍然是一个挑战。大多数的工程师团队将要做的是让它在一个类似于程序员视角的更快的模型上进行模拟。所以你必须有一个软件视角,在这里你可以测试在平台上运行的所有关键组件,能够在一个更高的模拟视角检查这些组件间的相互关系。”


各种各样的复杂性

SoC设计具有高度的可扩展性,具有多个内核和图形处理器。因此,使用模拟器对其进行模拟需要消耗数天的时间而不仅仅是几个小时。

Aldec硬件部总经理Zibi Zalewski说:“仿真的时间也与描述它的抽象层次有关。例如可综合的RTL的行为级别模型模拟起来就比门级模型会快。功能控制逻辑(FSM)模拟起来将比计算密集型数据路径(DSPs)要快。”

因此,大型项目中的模拟器通常用于模块级和IP的验证,SoC系统层面则用硬件验证方法来覆盖。但是今天看来,即使是子系统层面也会耗用一天或更长的验证时间,测试的复杂性也同样在增加。UVM已经成为了大型ASIC和FPGA工程的一个用于验证的标准,对于验证工程师来讲是一个很好的工具,但同样也需要巨大的模拟能力支持。

Zalewski说,幸运的是,由于设计和测试环境的复杂性,模拟已经成为瓶颈,因此有了更多的选择。“使用UVM测试平台在子系统层面验证IP模块的时候,很自然的会用到模拟加速。目前最新的仿真编译器已经能够支持例如基于功能的或者基于线程的SCE-MI模式,能够实现UVM的模拟到UVM加速的无缝迁移。这样的迁移卸载了UVM模拟器并保持相同的测试环境。由于缩短了模拟时间,能够增加测试范围,并发现及修复传统模拟中发现不了的问题。”

他认为,在SoC层面,可以使用混合模拟的方法,将虚拟平台或者SystemC的模拟器和仿真器结合。这种验证方法需要将SoC在这两种工具上分割,并保证分割后即使只拿到部分的RTL代码也能够进行验证。


困难评估

然而,定义多大是“太大”并没有一个定论,它因设计、应用领域和公司而不同。

Zalewski说,“太大”可以基于设计中门的数量,但是就模拟而言,运行所有测试用例所需的时间可能是一个用来描述设计大小更好的方法。Zalewski说,“可能会有成千上百个测试用例需要运行,验证团队需要花上不止一整夜的时间来等待结果,这会推迟整个项目的进度。”

一些设计需要在模拟时加入时间约束,这将使得一个中型规模的设计变得”太大”,更有效的验证方法可能是重新将这些测试向量通过某种方法以目标芯片上的运行速度进行模拟。这样反过来可以将测试时间缩短到几秒钟,并提供一个真正的系统级验证环境。

Cadence 系统与验证组的高级总监Frank Schirrmeister表示,这种方法取决于抽象的层面。在目前汽车行业的复杂程度上,模拟的准确性达不到像RTL那种程度。

他提到了波音公司为自己的飞机开发的全网模拟器。这是一个非常复杂的任务,需要将不同的系统组件抽象出来,服务器仅仅是该系统中的一个节点,“你需要有一个模拟的抽象层次,如同模拟学校的两栋楼之间的IT网络:楼之间的带宽是多少,多少光纤需要铺到地下,如何配置交换机,交换机需要获得哪些数据流量?这就是IT所考虑的问题类型。”


嵌入的视觉处理系统

也许过去几年中最复杂的工程就是视觉处理了,因为它在汽车自动驾驶以及虚拟现实游戏等市场中应用非常普及,它的增长与模拟的增加有直接的关系。

Synopsys的DesignWare ARC处理器高级产品经理Mike Thompson表示:“我们都把视觉处理系统视为理所当然应该具有的东西,因为我们一直都这么做,但实际情况是令人难以置信的复杂。我们正在建立的视觉处理器远远超过了35年来在这项业务中所参与的最复杂的工作,而且只有底层功能的发展才是令人满意的。”

但是视觉处理系统只是自动驾驶的一部分,随着车载电子复杂性的增加,它们之间的相互作用成为了主要的问题所在。

Thompson说,从有利的观点来看,传统的模拟方法并没有完全消除,特别是因为软件已经可以被分散在许多服务器上执行。 事实上,当Synopsys在其正在开发的处理器上进行验证时,它运行了数个月,在数千台服务器上执行了数万亿条指令。

但是事情总没有这么简单,NetSpeed System营销和业务发展副总裁Anush Mohandass指出,复杂的智能手机或者发动机中的汽车芯片的RTL仿真是非常困难的,并且难度越来越大。

和其他人一样,Mohandass指出提升抽象层次是必不可少的一步。如果你想进行细致的门级模拟,你可以模拟出许多细节的东西,然后将抽象级别扩展到你想模拟的程度。但是如果你想对整个芯片进行模拟,则不需要发送所有的比特位和字节,而是对某些事件进行模拟。如何追踪这些事件带来的影响?这个芯片是如何在这个抽象层次上工作的?这是你需要模拟的东西。你可以模拟一辆汽车的主板,然后在上面运行信息娱乐系统。你也可以直接模拟一辆汽车,只要你拥有一个非常简单的模型,并且它能够模拟那些复杂的东西。重点在于控制抽象级别,并且建立不同抽象级别的模型。关键在于你是否具有足够的抽象能力,能够在有意义的时间内模拟出足够的细节用于观察。

然而,这引发了这样的一个论点,即抽象层次会掩盖各种系统分析所需要的准确性。其实这就是深度学习和机器学习能够发挥作用的地方。

Mohandass说:“当我们试着去为一辆汽车,或者汽车内的一些复杂的东西例如SoC进行建模时,机器学习可以用来在数以亿计的数据中发现需要的参数,而不是人工的去筛选这些数据。我们可以试着用机器学习来计算出那些东西。”

终将有一天,传统的模拟和相关的技术将被淘汰,它们必须被新的验证技术增强来处理日益复杂的设计。


谢谢你对路科验证的关注,也欢迎你分享和转发真正的技术价值,你的支持是我们保持前行的动力。

1

点赞

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-26 20:44 , Processed in 0.014895 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部