来源:与非网
时间:2016-07-11
启动操作系统(例如 Linux)为设计人员做好了准备工作,但怎样开始着手开发面向游戏、数字标牌等市场的复杂多核设计这项实际工作呢?
当软件开发者听见“硬件加速仿真” 这个词,他们通常想到的是软件仿真器而不是硬件加速仿真。虽然通用硬件仿真器由于能够确保嵌入式系统软件与底层硬件正确地协同工作而赢得广泛的赞誉,但这种情况也在发生着变化。如今硬件加速仿真已经发展成为硬件和软件团队的共享资源,用以在芯片设计前加速硬件/软件集成。特别是当芯片开发项目中软件开发者的比例大于硬件工程师的比例时。
这些年来,硬件加速仿真用于 ASIC 和 SoC 设计的硬件验证,且其使用模型也在不断增加。硬件加速仿真的执行速度可以高达六个数量级,比硬件描述语言 (HDL) 软件仿真器的速度更快,可缩短设计调试过程并且无需限制设计尺寸。型的 SoC 设计是处理器、图形芯片、以太网交换机和路由器芯片。所有这些设计的容量都接近或甚至超过了 5 亿 ASIC 门标记。这些设计无法使用 HDL 软件仿真器完成。
图 1:赢得调试过程这项比赛:提供的执行速度高达六个数量级,比 HDL 软件仿真器更快,硬件加速仿真可以缩短设计调试过程,无需限制设计尺寸。
执行嵌入式软件
随着嵌入式软件成为业已复杂的片上系统 (SoC) 设计的重要组成部分,硬件/软件协同验证变得越来越重要。对于使用操作系统(例如 Linux)的设计,启动系统毫不费力。但 Linux 已经存在,并且设计师也无须编写代码。嵌入式软件必须使用内存映射和驱动程序定制到系统,系统只需简单地调用内存映射和驱动程序就可以让嵌入式软件对实际硬件执行实际工作。设计人员的前期准备就是启动OS。只有在 OS 成功加载后,真正执行工作的实际软件才能启动。尝试验证这样的应用只会延长运行时间,大大超出 OS 启动时间。
此外,设计人员必须测试多线程程序。对于一些系统而言,多个“线程”实际上变成了在不同内核(带有或不带 OS)上彼此独立运行的多个进程。数据包处理可能是这种情况的好例子:数据包处理通常包括多个处理器的流水线工作,每个处理器依次执行数据包处理功能的某个特定部分。所有线程或进程必须无缝地协作,根据需要传输数据并无缝交换上下文。
作为被广泛使用的资源——多机仿真不足以运行嵌入式软件。嵌入式软件无法在子集中进行拆分,而需要并行处理,所有这些都需要按顺序执行数十亿周期。硬件加速仿真可以简易地处理一个顺序进程且不受设计尺寸的限制。它能够以数百千赫或兆赫的速度,在不到一小时的时间内启动 Linux。
应尽早将新设计的硬件与新编码的软件集成,以解决错误——这对于硬件加速仿真来说轻而易举。它可以确保同时验证软件和硬件以确认软件和硬件能够正确地交互。在设计寄存器传输级 (RTL) 代码稳定后,就可以使用硬件加速仿真,这样可以发现需要数百万个验证周期才能找到的硬件错误。它能够以必要的速度、性能和容量追踪硬件内的软件错误或软件行为中的硬件错误用以处理复杂的调试方案,这是任何其它验证工具都无法完成的。
设计者不能选取的捷径
虚拟平台作为在实际硬件之前用来测试软件的工具,现在变得越来越普及。对于无需与硬件进行复杂交互的通用应用,虚拟平台是一种在收到硅片甚至 RTL 可用之前测试应用软件的有效方式。
然而,虚拟处理器的优点也是其缺点:它可以快速运行软件,因为它能把大部分的运行细节提取出来。对于等级较高的代码或应用,这样的提取是可以接受的。对于涉及硬件(如驱动器)的代码,设计人员不能选取那样的捷径。
虚拟平台绝对不适合用以证明芯片正在工作,因为虚拟平台消除了芯片的细节。为了验证嵌入式软件与底层硬件的交互,需要周期精确的设计呈现,以追踪 SoC 内任意位置的错误。硬件加速器可以在硅片测试之前完整的复现设计全部功能,因为硬件仿真设计是基于实际硅实施的,虽然时间周期不精确。
功能验证和系统验证是硬件加速仿真的强项。硬件加速仿真用于验证硬件和软件是否按预期工作并确认系统是否满足或超越规范。软件编程师使用它来验证嵌入式软件——应用程序、诊断、驱动程序、操作系统和软件驱动的测试,这些都需要处理亿万甚至十亿万的周期——在整个 SoC 开发周期扩展其应用。
硬件加速仿真为软件开发者提供了完全的、百分之百的硬件设计可视性,可以快速追踪设计中任意地方的错误。
不要混淆
验证硬件和嵌入式软件的组合预计占用大约70%的项目周期。
并且这项验证工作是要进行的挑战的工作,所以硬件加速仿真举足轻重也就不足为奇了。这项协同验证过程可以改善产品质量并将开发日程缩短数月之多。
SoC 项目团队的人员组成这些年来已发生改变,如今它包含软件开发者和硬件工程师。这两个学科领域的结合,提供了一条打造差异化产品的途径并赋予了产品技术优势。
虽然背景并没有很大的变化。当权衡成本与设计尺寸、低功耗考量因素、税收和收益性,上市时间仍然很繁重。相对而言,调试是硬件加速仿真很容易开展的事项,因为软件开发者和硬件工程师都可以从中获益。两方都开始重视硬件加速仿真同时验证硬件和软件的能力。没人会再混淆软件仿真和硬件仿真器了。