预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

http://www.paper.edu.cn一种基于ISS的软硬件协同验证环境幸强江苏省南京市东南大学国家专业集成电路系统工程技术研究中心(210096)xqhust@163.com摘要:本文讨论了一种面向SOC设计的基于指令级仿真器(ISS)的软硬件协同验证环境。在该环境中硬件用硬件描述语言来建模软件用编程语言来编写使用指令集仿真器和事件驱动逻辑仿真器分别完成对软硬件的仿真两个仿真过程使用不同的进程并行进行并通过进程间通信(IPC)实现两个仿真器之间的信息交互。关键词:指令级仿真器;协同验证;进程间通信;套接字1概述软硬件协同验证的概念已经提出多年但是直到这些年随着SOC技术的发展软硬件协同验证技术才得到更多的关注和重视并得到发展。软硬件协同验证是一种在硬件流片封装之前验证SOC系统硬件和软件是否能够正确工作的技术。协同验证又可以叫做虚拟原型技术因为硬件部分的仿真虽然跟真实硬件的运行基本一样但是硬件仿真其实是通过在工作站上的一个软件程序的运行来实现的[1]。协同验证的基本框架如图1所示。图1软硬件协同验证的基本架构对比传统的验证方法协同验证技术使得软件设计工程师能够在设计早期进行调试可以较早的进行软硬件的整合缩短上市时间(time-to-market)。另一方面通过软硬件协同验证可以为硬件设计工程师提供了一整套非常接近于现实的激励集有利用于提高验证的质量。协同验证系统由一个硬件执行环境和一个软件执行环境组成通过事件和命令使用一些机制在这两个环境间进行控制。软件的执行环境用于产生总线周期的序列协同验证工具将总线周期转换成许多信号事件或者命令集并驱动这些信号事件命令进入硬件执行环境然后对总线周期响应进行硬件环境取样这一响应又被传送回软件环境。同时保持硬件及软件环境间的同步以便硬件或软件环境都可发现由于错失响应而导致有误的情形。1http://www.paper.edu.cn软硬件协同验证中软硬件部分都是通过建模的方式实现。其中硬件建模方式有如下几种[2]:1、采用FPGA原型或模拟系统;2、采用HDL及逻辑仿真器;3、采用高级程序语言(如C/C++语言)编写的行为模型。软件也可通过几种方式执行:1、采用ISS(指令集仿真器)在CPU上运行;2、通过编译并在运行仿真程序的主机上运行。在一般的SOC设计中硬件建模一般用硬件描述语言来实现软件一般需要编译成针对SOC硬件嵌入式核的目标代码因此在本文中我们将采用指令级模拟器加逻辑仿真器(ISSwithLogicSimulator)的方法来构建协同验证环境。2进程间通信软硬件仿真器之间的通信是协同验证中的关键技术。由于软件仿真和硬件仿真使用独立的两个进程因此我们可以使用Unix下的进程间通信(IPCInterProcessCommunication)技术来实现软硬件仿真器之间的信息交互。常用的几种UnixIPC有无名管道有名管道(FIFO)和Unix套接字(Socket)[3]。无名管道是Unix中最常用的IPC方式优点是非常简洁弱点是它只能在相关的有共同祖先的进程间使用;有名管道(FIFO)和无名管道的区别在于它是持久稳定的而且可以让无任何关联的进程间交换数据;套接字是一种抽象数据结构用以创建一条在没有关联的进程间发送、接收消息的通道(连接点)一旦通道建立之后被连接起来的进程就可以通过普通的文件系统存取例程来进行通信了。在通信的两方中一方称为客户程序(client)另一方称为服务程序(server)建立过程如图2所示。对比上述三种通信方式的