一种基于ISS的软硬件协同验证环境.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种基于ISS的软硬件协同验证环境.pdf

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

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档