网站大量收购独家精品文档,联系QQ:2885784924

第13篇.编程语言接口.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA技术与Verilog HDL语言 第十三章 编程语言接口(PLI ) 概述 Verilog语言提供了一组标准的系统任务和函数C。在设计时,经常会遇到一些特殊的情况,需要通过定义自己的系统任务和函数才能实现设计目标。为了做到这一点,设计者需要与表示设计的内部数据结构以及Verilog仿真器的仿真环境进行交互。编程语言接口(PLI)提供了一组接口子程序,用于访问(读/写)内部的数据表示,并可以提取仿真环境信息。用户自定义的系统任务和函数可以通过这组预定义的PLI接口子程序来创建。 Verilog PLI的发展经历了三代。 1.任务/函数(tf_)子程序(又称实用子程序)组成了第一代PLI。这些子程序主要用于以下几类操作:用户自定义的任务和函数、实用函数、回调机制和把数据写到输出设备。 2.存取(acc_)子程序组成了第二代PLI。这些子程序可直接在Verilog HDL内部数据结构中进行面向对象的数据存取。这些子程序能用于访问和修改Verilog HDL描述的多种对象。 3.Verilog过程接口(vpi_)子程序组成了第三代PLI。这些子程序是acc_和tf_子程序功能扩展的集合。 本章学习目标 解释在Verilog仿真中如何使用PLI子程序。 描述PLI的用途。 定义用户自定义系统任务和函数以及用户自定义C子程序。 理解用户自定义系统任务的连接和调用。 从概念上解释在Verilog仿真器内部如何表示PLI。 区别并描述怎样使用两类PLI库子程序:access子程序和utility子程序。 学习如何创建用户自定义系统任务和函数,并学习如何在仿真中使用它们。 使用PLI子程序的规范仿真流程 设计者使用标准Verilog结构和系统任务来描述设计和激励。此外,也可以在设计和激励中调用用户自定义系统任务。设计和激励文件经过编译被转换成表示设计的内部格式。这种内部数据结构通常采用Verilog仿真器特定的专利格式,对设计者是不公开的,因此他们无法理解。接着这一内部数据结构被用于运行实际的仿真并产生输出。 用户自定义系统任务都被连接到一个用户自定义C子程序。该C子程序以PLI接口子程序标准库的方式实现,它可以存取表示设计的内部数据结构。标准C子程序可以用C编译器编译。标准PLI库由Verilog仿真器提供。 13.1 PLI的使用 由于PLI允许用户自己定义实用工具来存取(读、写或修改)表示设计的内部数据结构,因此它具有强大的能力,可以对Verilog语言的功能进行扩展。PLI具有很多种用途,如下所示: 1. PLI可用于定义其他系统任务和函数。典型的例子有监控任务、激励任务、调试任务和复杂操作等,这些任务和操作难以用标准的Verilog结构实现。 2. 一些应用软件,比如翻译器和延迟计算工具,可以用PLI编写。 3. PLI可用于提取设计信息,比如层次、互连、扇出及特定类型逻辑元件的数目等。 4. PLI可用于编写专用或自定义的输出显示子程序。波形观察器可用它生成波形、逻辑互连、源代码浏览器和层次信息。 5. 为仿真提供激励的子程序也可以用PLI编写。激励可以自动生成或者从其他形式的激励转换而来。 6. 普通的基于Verilog的应用软件可以用PLI子程序编写。这种软件可以与任何Verilog仿真器一起工作,因为PLI接口提供了统一的存取方式。 13.2 PLI任务的连接和调用 设计者可以通过使用PLI库子程序来编写自定义的系统任务。然而,Verilog仿真器必须知道用户自定义系统任务和相应的用户自定义C函数的存在。这是通过把用户自定义系统任务连接到Verilog仿真器来实现的。 为了理解这个过程,以一个简单的系统任务$hello_verilog为例进行说明。当$hello_verilog这个任务被调用时,它只是简单地输出一条消息“Hello Verilog World”。首先,实现该任务的C子程序必须用PLI库子程序定义。文件hello_verilog.c中的子程序hello_verilog如下所示: 13.2.1 PLI任务的连接 在Verilog代码中,任务$hello_verilog无论什么时候被调用,C子程序hello_verilog都必须执行。仿真器需要意识到存在一个名为$hello_verilog的新系统任务,并且该仿真器要连接到C子程序hello_verilog。这一过程称为把PLI子程序连接到Verilog仿真器。不同的仿真器提供不同的方法来连接PLI子程序。虽然各种仿真器的连接方法不尽相同,但是连接过程的基本原理仍然是相同的。有关细节可参考仿真器的参考手册。 在连接阶段的最后,生成了一个包含$hello_verilog新系统任务的特殊的二

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档