嵌入式软硬件协同设计与验证流程详解

时间:2022-02-27 10:30:45

嵌入式软硬件协同设计与验证流程详解

摘要:软硬件协同设计改变了传统的设计反复修改系统方案的缺点,通过综合分析系统软硬件功能,最大限度地挖掘系统软硬件之间的并发性,将软硬件开发结合得更紧密,可以大大提高设计效率,使设计出来的系统工作在最佳状态。本文将详细分析软硬件协同设计与验证技术。

关键词:软硬件协同设计 协同验证 传统设计 传统设计

中图分类号:TP368 文献标识码:A 文章编号:1007-9416(2013)04-0096-02

传统的嵌入式系统设计采取“硬件优先”的设计方法,该方法软件开发往往滞后于硬件开发,通常软件开发在硬件平台开发完成后才进行,而基于硬件平台的验证在软件开发完成后才进行。正是由于这种滞后性,迫使软件和硬件只能串行开发,系统开发需要经历反复修改和验证,这大大增加了系统的开发周期。

由于嵌入式系统中软硬件密不可分,为了缩短嵌入式产品的开发周期,嵌入式系统设计方法中的一个重要组成部分就是软硬件协同设计。与传统软硬件串行的设计方法相比,协同设计方法最大限度的挖掘软/硬件之间的并行性,提高系统开发设计效率。软/硬件系统设计方法首先依据详细的系统需求确定软硬件划分方案,并定义软/硬件接口,然后在EDA(Electronic Design Automation电子设计自动化)工具的支持下,进行软/硬件的协同开发。软硬件协同设计的每个阶段都可以进行软硬件协同验证,以确保系统的设计没有背离原始设计需求,该设计方法是逐步细化、反复迭代的过程。这种开发方式是一种风险可控的设计方法,能够充分利用软硬件资源,缩短开发周期,降低成本。

1 软硬件协同设计与传统设计方法比较

构成嵌入式系统的各个功能模块,按照其性质可以分为软件模块和硬件模块两类,但总体上软件模块的开发滞后于硬件模块的开发,将该方法统称为传统的设计方法,其设计流程如图1所示。

传统设计方法在粗略获取系统需求的情况下,首先进行硬件设计,之后才进行软件设计。硬件设计具有一定的盲目性,因为在设计过程中缺乏对系统软件架构的清晰了解,所得到的设计结果很难充分利用软/硬件资源,难以适应现代复杂的、大规模的系统设计任务。

软硬件协同设计找到系统软/硬件的最佳结合点,充分利用了软硬件资源的并发性,从而使软件设计和硬件设计作为一个有机整体并发设计,大大提高了系统的工作效率。

在软硬件协同设计中,硬件设计和软件设计在设计过程的各个阶段都是相互作用的。基于对系统资源的充分考虑,进行软硬件功能划分,在软硬件功能的设计和仿真评价过程中,软件和硬件是互相支持的。这就使得在系统设计早起,软硬件各个功能模块能够相互结合,从而及早发现系统设计中存在的问题,尽可能的减少在设计开发后期反复修改系统,而且有利于挖掘系统潜能、提高系统整体性能、缩小产品体积、降低系统成本。

2 软硬件协同设计流程

完整的嵌入式系统软硬件协同设计流程,从对产品功能规格及需求的一系列分析设计开始,最后以开发出一个能满足所有要求的可运作的产品结束。设计流程主要分为以下几个阶段:需求分析、系统结构设计与软硬件划分、IP/模块(Intellectual Property)设计与验证、模块集成与互连、软硬件协同验证、系统测试、系统后端设计与实现等,一个完整的SoC软硬件协同设计流程如图2所示。

下面依次对功能需求分析、系统结构设计与软硬件划分、IP的设计与复用、IP模块的集成与互联以及软硬件协同验证进行描述:

2.1 功能需求分析

详细了解嵌入式系统的实际需求,最终提取出芯片设计的需求规范,包括芯片设计所需的特征、功能、接口以及典型应用。

2.2 系统结构设计与软硬件划分

该阶段从设计出的需求规范出发,对系统所需具备的功能和性能进行定义,并进行系统结构设计与软硬件划分,同时还定义了系统的接口、总线结构、硬件功能以及软件功能。

2.3 IP的设计与复用

基于嵌入式系统设计规模大,复杂程度高的特性,为了提高设计的可靠性并尽可能的节约开发时间,只有依赖基于IP复用的设计方法,通过继承、共享或购买所需的IP,然后再利用EDA工具进行设计、综合和验证,从而加速芯片设计过程,降低开发风险。

2.4 IP模块的集成与互联

根据系统结构的定义,进行IP模块的集成和互联,设计的顶层只包括例化的元件以及例化元件之间的连线,对一些IP模块,需要增加接口电路或者封装电路的设计,并且保证元件与元件之间都是同时钟域的寄存器输入与输出。对于跨时钟域的异步设计,要进行同步处理,包括采用双触发器、握手信号等同步技术。

2.5 软硬件协同验证

软硬件协同验证技术是嵌入式系统设计的关键技术。软硬件协同验证是一种在流片封装之前,验证嵌入式系统硬件和软件是否能够正确工作的技术,分为两个阶段:虚拟原型验证,FPGA原型验证,两个阶段的验证是反复迭代、不断重复的过程,从而更加快速有效的验证嵌入式系统功能的正确性。

3 软硬件协同验证流程

软硬件协同验证有两个主要作用:其一软件开发人员在系统设计早期便能访问硬件,其二为硬件设计在投产前提供额外的测试激励。软硬件协同验证流程如图3所示。

软硬件协同验证流程大致分为:系统集成前的IP/模块级验证,系统集成后的IP/模块级验证,系统集成后的系统级验证,以及系统应用验证四个阶段。

3.1 系统集成前使用测试向量的IP/模块级验证

验证主要是针对IP/模块的所有功能点的验证,以及片上总线接口的功能验证。对IP/模块级的验证主要使用HDL(硬件描述语言),开发Testbench(测试平台)和Testcase(测试用例),给设计施加激励并观察其响应来进行验证,此处的平台为系统集成前的测试平台,基于该平台能够简洁并全面的验证各IP/模块的所有功能点。此阶段是系统设计验证中最基本单元验证,仿真验证调试除错手段丰富,容易添加测试激励。

3.2 系统集成后使用测试程序的IP/模块级验证

主要验证的对象是各IP/模块的功能点,但是该阶段的验证环境是集成后的系统环境,并需要开发软件测试程序,测试输入是通过处理器执行测试程序来完成的,测试结果的收集也是通过处理器来输出到外设或其功能仿真模型,该阶段的测试环境已经接近实际系统工作环境。

3.3 系统集成后使用测试程序的系统级验证

验证的重点不再是各IP/模块的某个功能点,而在于通过整个系统的运行来验证系统级特性,如模块间的互操作性、系统互联及流控制等是否正常,该阶段测试环境与第二阶段相同,只是测试重点不同。

3.4 系统应用验证

主要是指将系统置身于真实的环境中进行验证,开发应用程序,并按照系统应用中的实际需求,对整个系统进行验证。

4 结语

与传统嵌入式系统设计方法相比,软硬件协同设计通过挖掘软硬件之间的并行性,可以克服传统设计方法中软件开发滞后于硬件开发,软件和硬件分开设计而带来的弊端,使整个设计过程能够合理高效。随着CAD技术的发展,EDA工具对软硬件协同设计技术的支持将越来越多,软硬件协同设计技术在嵌入式系统设计中的作用也将越来越重要。

参考文献

[1]张玢,孟开元.H.264编解码器软硬件协同设计与验证技术研究[D].西安:西安石油大学,2011.

[2]王少平,王京谦,钱玮.嵌入式系统的软件协同设计[J].现代电子技术,2005(2).

[3]赵川,徐涛,孙晓光.软硬件协同设计方法的研究[J].计算机工程与设计,2003,24(7):79.

上一篇:基于XSJ—Ⅱ小功率随动系统的超前校正 下一篇:基于FPGA和CPCI的数据采集系统硬件电路设计