为什么需要DPI

DPI出现的动机是双重的。有一种占优势地位的方法论要求接口应该允许构建异构系统(设计或测试平台),其中一些组件可以用除SystemVerilog之外的语言(或更多语言)编写。另一方面,实际需要一种简单有效的方法来连接通常用C或C++编写的现有代码,而不需要PLI或VPI的知识开销。

DPI遵循黑盒的原则:组件的规范和实现明确分开,实际实现对系统的其余部分是透明的。因此,实现的实际编程语言也是透明的,尽管该标准仅定义了C链接语义。 SystemVerilog代码与外部语言之间的分离基于使用函数作为SystemVerilog中的自然封装单元。总的来说,任何函数都可以被视为一个黑盒子,并以透明的方式在SystemVerilog或外部语言中实现,而无需更改其调用。

现实世界中,C和C++应该是IC世界,最被广泛使用的高级编程语言,而且有很多开源的代码和工具都是C或者C++代码编写。按照DPI的方法论,我们理应为C和C++世界通往SV世界打开一扇门。

DPI-C的出现使得SV和C之间的互动变得简单直接

  • 使用C函数作为SV函数/任务,反之亦然
  • 直接调用C/C++库中的函数
  • 直接将输入传递给函数
  • 直接从C/C++函数接收返回值

尤其是在验证领域,使用C/C++代码作为参考模型很普遍

  • 使用功能强大的OpenSSL OpenCV等开源库
  • 参考模型是由设计师或软件团队使用C/C++编写的
  • 使用MATLAB生成DPI组件

SystemVerilog可以调用C,C可以调用SV

  • 支持函数和任务
  • 在协同仿真中很有用

DPI 和 DPI-C
DPI在SystemVerilog LRM 3.1a(2003)中定义的关键字
DPI-C在SystemVerilog IEEE 1800-2012中定义的关键字
“DPI”已弃用,应替换为“DPI-C”

位向量或逻辑向量相关的系统功能
DPI:typedef uint32_t svBitVec32
DPI-C:typedef uint32_t svBitVecVal

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值