微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 复杂系统级芯片的软件/硬件协同验证

复杂系统级芯片的软件/硬件协同验证

时间:11-06 来源:EETCHINA 点击:

本文针对复杂系统级芯片的软件/硬件协同验证环境的多种方法进行了分析和比较, 并就各种方法在蓝牙系统级芯片设计中的应用为例对其进行了详细地阐述。

随着半导体技术的飞速发展,单个硅片上的集成度越来越高,如何更快、更有效的完成基于SoC设 计逐渐成为人们关注的焦点。目前,许多设计小组仍然沿用十万门设计中用过的工具和方法来验证庞大的硬件和其嵌入软件,这些方法往往要占用50%以上的设计 周期, 而且已经达到极限。验证最后设计的正确性被视为设计更大规模的系统级芯片的重要瓶颈。本文针对复杂系统级芯片的软件/硬件协同验证环境的多种方法进行了分 析和比较, 并就各种方法在蓝牙系统级芯片设计中的应用为例对其进行了详细地阐述。

随着近来日益明显的灵活性需求,系统级芯片设计采用软件来实现设计中的一部分硬件功能, 而不再采用单一用途的硬连接。现今,在一个复杂的系统级芯片应用中,例如视频解码器,设计者将集成硬件模块,应用软件,RTOS,片上总线,可编程嵌入处 理器I/O外围设备,内存模块,即所谓嵌入式内核系统级芯片框架。

协同验证环境

嵌入技术为基础的SoC系统的设计周期,通常首先产生一个系统设计的抽象模型并对其进行模拟, 功能抽象被映射到一个详细的系统结构,同时定义了系统框架的性能模型。系统结构映射把复杂系统分解成多个层次独立的硬件核子模块和软件核子模块核。同时系 统需求被转换为软件和硬件规范。硬件设计团队利用Verilog和VHDL完成硬件部分, 然后用硬件模拟器做验证。软件设计团队利用汇编,C,C++语言完成SoC所需的RTOS内核软件或其他功能软件如通信协议软件的设计,利用处理器模型和 ICE来测试软件。传统上,软件团队等到硬件原型完成才可进行最终的系统集成。很多问题会产生在系统集成的过程中。这些问题产生源于对规范的误解,不适宜 的接口定义,和稍后的设计变化。通过软件递归设计可以消除这些错误,但这样可能会影响系统的性能。如果利用修改硬件的方法会十分耗费金钱和时间,特别是当 其中包含循环设计集成电路。把系统的集成阶段移到设计周期的前期可以较早的消除系统集成的问题。这可以通过创建一个软件/硬件协同验证环境来解决这个问 题。

在一个软件/硬件协同验证环境中有些方面十分重要:准确,环境中模型应该时钟周期准确或者管脚准确而且必须准确地映射 SoC功能。快速,环境的速度应该足够快得可以使由实时操作系统和应用程序组成的软件运行。适用,软件和硬件设计团队都应该能够运用这个环境来进行功能和 性能验证。可得,为了实现Time_to_Market(TTM)的目标, 并能够完成硬件/软件协同设计和协同验证,环境应在设计周期的早期得到。经济,较少的金钱耗费也是一个和准确性,性能同样重要的考虑。

一般的协同验证环境会有一个源代码调试器作为基本构成,为了让用户可以下载固件/软件并连接系统。调试器可以帮助阅读源代 码,设立断点,暂停和控制处理器的运行。依靠所选择的环境的不同,处理器模块就可以被一个模拟模型所代替,诸如指令集模拟器(ISS),总线功能模型,或 者RTL代码。系统剩余的外围设备可以用C代码模型,正式芯片,RTL 码,或在FPGA中的实现来代替。

表1列举了几种协同验证环境, 它们支持在设计周期中较早地集成软硬件,可以克服由传统验证方法所带来的缺陷,同时,基于以下协同验证环境所开发的软件可以直接移植到最终的硅片上。当选取一种验证环境时,验证目标,调试覆盖,性能要求,可以利用的资源是必须考虑的要点。

本文以后的部分将针对其中的软体原型和原型系统进行详细地阐述,并以各种方法在一款蓝牙系统芯片的设计中应用为例。附图 3 表示了举例的蓝牙系统芯片设计框图, 该设计基于ARM7TDMI处理器核和AMBA片上总线。处理器运行在RTOS上完成所有任务的管理和调度,同时运行完整的蓝牙协议栈。

软体原型

一个软件原型是被验证的设计的软件表现。 它可以检查处理器的寄存器状态,内存存取,和外围设备。如果运行软件原型主机的运行速度足够快,它可以使实际应用软件和固件在其上运行。利用软件原型可以 使设计者在得到实际硅片之前使设计者平衡所修改的系统参数和检查所得结果,测试中断处理函数,开发和测试驱动程序,测试编译器产生的代码的正确性,使系统 和外围设备的行为可视化和检验应用程序算法的正确性。

在软件原型中,处理器用一个ISS模拟,并和源代码调试器接口。外围设备用C模型表现。图1为所举例的蓝牙

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top