关于硬件模拟的一点感知

设计一般以一个规范开始, 这个规范能够约定最终产品应该做什么, 并从根本上推动整个开发周期。在开发的早期阶段, 第一个任务是使用规范来验证正在开发的设计是否正确无误的。然后当设计的所有部分组装成一个完整的系统时, 第二个任务使用规范来确定系统是否也按照预期的方式运行。

这两个任务被称为设计验证和验证设计。有时, 这两个术语可以互换使用。虽然相似, 但这两个任务有着非常不同的目标。

· 设计验证: 我们建立的系统正确吗?

· 验证设计: 我们建立了正确的系统吗?

在芯片系统设计过程中, 采用基于软件的硬件描述语言(HDL)模拟方法进行设计验证。相反, 验证设计是在实际使用的情况下对整个系统的原型进行验证。

不幸的是, HDL 模拟执行速度并没有跟上设备的复杂性, 尽管它有很多优点: 易用性, 灵活性和快速设计迭代时间。许多当前的设计, 例如拥有1024个端口或高画质影像处理器的互联网路由器, 需要大量的验证序列, 即使在最快的 PC 上也需要很多年的时间来模拟。这些序列源自于需要运行长、连续的串行协议流, 或者处理复杂的嵌入式软件来完全验证 SoC 或系统设计。

此外, 在硅可用性之前开始软件验证已经变得非常重要。为了达到这个目的, 可以引入了一种叫做虚拟样机的新方法。虽然其中一些工具已经实现了启动软件开发的目标, 但它们只涉及不需要精确表示硬件应用程序。当测试嵌入式软件, 如固件、设备驱动程序、操作系统和诊断程序等嵌入式软件的交互作用时, 它们就失败了。对于这个测试, 嵌入式软件开发人员需要依靠一个精确的硬件模型来验证他们的代码。

相比之下, 硬件设计师需要一套相当完整的软件来在系统验证期间完全测试它们的 SoC。基于 FPGA系统原型的方法提供了设计的精确表示, 但不适合硬件调试。因此, FPGA 原型对软件开发团队的吸引力更大, 只要他们的设计适合一些 FPGA。

最终, 软件和硬件组需要一起建立一个共同的模型来验证完整的硬件和嵌入式软件。对于大多数使用传统开发周期的, 第一个完整的模型如图1所示。

图1 | 传统开发周期中的 第一个完整模型

因为嵌入式软件在一个完整的、精确的系统模型中无法被完全验证, 所以在芯片中发现问题的可能性增加了。它们可以在软件或软件和硬件中找到, 通常会迫使额外的芯片响应和代码的修改。逻辑和代码的修改都有成本和时间,对市场产生负面的影响。要避免这些影响, 需要采取一种统一的解决方案, 使硬件 / 软件验证及确认远远领先于第一个定制芯片。

最新一代的硬件仿真器实现了这一点。它们提供了几乎无限的容量, 最多可以提供数十亿个门, 并以1兆赫的速度验证正在测试的设计(DUT) , 比 FPGA 原型系统提供了更好的硬件调试功能。它们很容易使用, 可以更快地编译 DUT, 并且允许在世界上任何地方远程访问。新的软件应用程序运行在模拟器上, 使他们能够支持几种类型的验证, 从低功耗分析和验证到测试逻辑验证的设计。模拟器还将独特的技术带到各种各样的市场领域, 从网络到处理器 / 图形, 存储等等。

在设计周期的早期, 仿真器和 SystemVerilog 用于在组装完整的 SoC 设计之前验证IP块和子系统。在设计周期的后期, 仿真器被用来验证整个系统, 并执行嵌入式软件验证。

它们为硬件工程师和软件工程师提供完整的硬件和软件调试功能。这使得硬件和软件开发组合作并以一种以前不可能的方式解决集成问题(图2)。

图2 | 最新一代的硬件模拟器显著加速了开发周期

以前只限于对大型设计进行验证的硬件模拟, 如今已成为所有设计验证及确认流的基础。这种新发现的流行是由于芯片定制复杂性的增加和嵌入式软件的广泛使用。在一个设计中心, 在未来的整个开发周期中, 从硬件验证、硬件 / 软件集成到嵌入式软件和系统验证, 硬件模拟被使用在整个开发周期中都可能得到广泛的使用。

(编译自 www.embeded-computing.com)

原文发布于微信公众号 - 喔家ArchiSelf(wireless_com)

原文发表时间:2018-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏飞总聊IT

互联网企业的开源使用窘境与出路

1 自从Hadoop生态圈流行开来以后,以Apache基金会为代表的开源社区空前强大,国内外互联网公司都纷纷使用开源软件。然而参与开源社区并非是一件容易的事情。...

3658
来自专栏EAWorld

微信小程序第一手实践分享

目录: 1. 如何理解小程序 2. 小程序如何串联微信 3.个人实践心得 今天是微信小程序正式上线的第一天,从小程序公布、内测到今天,市面上对于小程序众说纷纭,...

4038
来自专栏测试开发架构之路

《Google软件测试之道》告诉你什么是测试

第一章:Google软件测试介绍 1.Google的测试团队并非雄兵百万,我们更像是小而精的特种部队,我们依靠的是出色的战术和高级武器 2.在Google,写代...

4267
来自专栏BestSDK

想做产品经理,先从写一篇PRD开始吧

一、什么是PRD? PRD为Product Requirement Document的简称,其中文翻译为:产品需求文档。该文档是产品项目由“概念化”阶段进入到“...

3997
来自专栏BestSDK

不是开发者也要知道,揭秘SDK采集5大隐私数据的方式

编辑导语 SDK采集包括五大类,开发者可以采集到信息:“设备信息”、“应用信息”、“传感器信息”、“账号信息”、“网络相关信息”。如果一旦开发者需要采集这些数据...

2775
来自专栏SDNLAB

如何规划软件定义的数据中心网络

数据中心网络是企业IT创建私有云和混合云架构战略中的关键组成部分,它能够改进数据中心的网络的自动化、敏捷性、安全性和分析能力,能够实现企业自有应用程序与公共云服...

1102
来自专栏程序你好

为什么Devs喜欢GitHub(和微软购买它)?

802
来自专栏云计算D1net

什么是云原生应用 有哪些关键点?

最近讨论云原生应用越来越多,其是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持...

2867
来自专栏云计算D1net

云计算是什么?你现在需要知道的一切

公共云使客户无需投资新硬件或软件即可获得新功能。相反,他们向云计算提供商支付订阅费或仅为他们使用的资源付费。只需填写Web表单,用户就可以设置账户,并启动虚拟机...

2203
来自专栏IT技术精选文摘

敏捷规划时间表

1493

扫码关注云+社区

领取腾讯云代金券