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

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

日志

验证的方法篇之四:虚拟模型

已有 2820 次阅读| 2016-8-25 19:17 |个人分类:验证系统思想


对于系统虚拟建模的广泛定义是它包含高抽象级的系统硬件模型,而与此同时软件开发可以在此硬件模型基础上展开。通过这种方式,虚拟模型不但可以让软件开发在更早期就展开,而且还可以收获软件开发的反馈,从而交给硬件设计。


这种反馈在以往的瀑布模式开发周期中是无法实现的,因为软件往往需要等到硬件设计制造完成以后才能展开。通过虚拟模型,硬件可以更早地收获软件反馈而对现有的设计更早地进行修改。这种硬件和软件之间更紧密的协作方式,譬如在早期软件利用虚拟模型测试性能时就可以提出是否需要硬件加速器,或者在更早期来判断硬件和软件的协同任务是否可以满足总的功耗目标。


在目前多核的移动平台上,一个不断增长的需求就是通过划分不同的任务到多核上面来取得更好的性能,而这种软件层面的估测就可以在更早的虚拟建模阶段完成。目前我们通过多项虚拟建模的技术例如协同设计、协同仿真和协同验证,来企图在更早期就可以发现设计中的缺陷,使得修改这些缺陷可以在相对容易实施的阶段完成。通过这种将设计问题更早期暴露出来的方式来使得芯片可以完成一次流片成功的目标,和贴合市场越来越紧迫的窗口需求。


虚拟建模包括一系列的验证技术,他们有仿真(simulation)、模拟(emulation)、FPGA,而目前的现状是验证人员往往会通过混合这些方法来在最短时间内确定更好的效果。在这里,我们将虚拟模型先限定于仿真(simulation),而将模拟和FPGA归类为硬件加速技术,我们会在后面的文中主要介绍硬件加速技术。

那么,虚拟建模的优点有哪些呢?

  • 在早期可以通过软件测试来发现硬件和软件的问题:这种方式可以提前硅后软件开发,更早暴露软件和硬件之间协作的问题或者是边界定义不清晰的问题,而在RTL阶段甚至模块定义阶段就发现和修改缺陷。

  • 软件开发反馈从而修改硬件结构和RTL设计:软件和硬件紧密协作带来的是,软件也参与到了硬件结构定义的工作中。

  • 减少硬件协同软件的验证工作:由于有了虚拟模型,使得硬件设计有源可寻,同时软件的早期进入也可以帮助硬件完成一些难以通过仿真完成的测试,使得系统级测试更早期可以完成。

  • 为用户建立硅前平台模型:更早期的硅前平台模型一旦经过软件测试,可以为用户提供可开发的平台。

  • 硅后平台的参照模型:硅前平台模型有着更可见的内部性能、功耗和设计信号,而这些内部细节在物理芯片上都是观察不到的。


截止现在,虚拟建模仍然是一项不断完善和发展的技术,而它也正在被广泛的运用的芯片设计验证领域中。那么目前主要的虚拟建模平台有哪些呢?

目前工业界一致推广TLM(Transaction Lelvel Models)用来建立抽象层次的模型,而TLM也已经发展到了TLM 2.0标准。主要支持TLM2.0标准的语言有SystemC和UVM方法学。目前主要的EDA厂商都可以支持SystemC的仿真,我们可以将支持SystemC模型的仿真平台分为两种

  • 各种主要的仿真器(simulator):它们支持SystemC的编译和建模,而由于SystemC本身可以垂直大跨度的硬件抽象度,所以模型既可以拥有TLM端口,也可以拥有硬件信号端口。如果模型在边界上规定了信号时序,那么也可以将端口信号添加到波形窗口中进行查看,当然也可以通过断点的方式来调试SystemC模型。

  • 专用的虚拟建模平台(virutal prototyping platforms):这些专用平台是专门服务于虚拟建模及其仿真的,从抽象级来讲,它们的视野显著高于RTL级仿真,从开发链来看,它们会从更早期的产品定义阶段开始。更详细地说,这些专用虚拟建模平台主要服务的阶段包括有:结构设计和评测、允许硬件软件之间的权衡分析、早期的性能和功耗评估、软件集成和测试、为RTL验证提供参考模型。不同的EDA厂商提供的平台有:First Encounter(Cadence)、Vista(Mentor)和Virtualizer(Synopsys)。


那么在这些平台上,虚拟模型大致建立的方式是什么样的呢?


实际上,虚拟模型的建立也类似于硬件RTL的建模,只是从抽象层次上来讲它们提高了,或者从代码量上来讲它们变少了(但不见得变简单了,这要看逻辑实现的细节程度)。由于芯片中各个子模块都会对照着不同的软件驱动库、应用库,我们需要在芯片系统级建模过程中最大限度地囊括所有子模块对应的TLM模型,这样才会提供给软件最大程度上的自由度(即可以将日后为硅后开发的软件先在虚拟平台上测试)。

在虚拟建模平台上,可以通过可视化界面和自动智能的方式将已经准备好的模块进行集成。在集成过程中,我们需要主要讲模块类别按照提供方分为:

  • 自建虚拟模块(即按照自定义的硬件来对照建立的虚拟模块)。

  • 商业第三方IP(这些虚拟模型IP也对应着硬件IP模块,由于完善的商业IP交付包同时包含多个设计验证部分,包括RTL、SystemC、验证平台等)


如下图,在虚拟模块集成过程中可以从现有库中选择IP


如果虚拟模块需要用户自定义,那么平台工具也可以通过用户大致定义接口、内部属性来生成框架,而后等待用户去填充该完备的功能,例如下图:


同时,通过可视化窗口完成系统集成


当通过虚拟建模平台完成集成以后,虚拟系统会完成编译建立模型,进而交付给软件组以供开发,另外软件组的反馈也会报告给硬件设计组。


此外,由于虚拟模型可以考虑作为参考模型参与到RTL仿真中,这种SystemC同RTL的协同仿真模式包括有:

  • 协同设计(co-design):将SystemC模型集成到现有的设计当中,作为暂时替代设计的一部分。对此种设计的要求是虚拟模型的边界接口应该有合适的时序来同相邻的模块完成时序的一致性。

  • 协同验证(co-verification):将虚拟模型作为参考模型集成在验证环境中,为此一般的要求是虚拟模型通过TLM在环境中实现集成。


至此我们将虚拟建模的优势和方法大致讲完,目前越来越多的公司都已经应用该方法来尽可能地提前软件开发时间,并在早期反馈给硬件设计。同时,此种方法对于团队学习曲线、如何在旧有硬件设计流程中集成并有效组合、如何考虑虚拟建模在远期价值和人力额外投入的性价比、如何实现虚拟模型团队同设计验证团队的整合等等都是对现有工作方式的挑战,这一点需要团队整体都看到它的优势并且愿意为之改变,才会将它的优势更好地发挥出来。


我们下一篇将为你带来《硬件加速》,一起来看看业界最新的硬件加速模拟科技。


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



点赞

评论 (0 个评论)

facelist

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

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

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

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

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

GMT+8, 2024-4-19 22:40 , Processed in 0.023007 second(s), 11 queries , Gzip On, Redis On.

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