sv编程语言_SV DPI-C接口学习心得

1、是什么??

DPI(Direct Programming Interface),全称直接编程接口,是SV与其它语言(C/C++)交互的接口,基本上是唯一接口了。

2、为什么??

说完是什么,那么我们可以考虑一下了,为什么需要这个接口呢?或者说为什么SV/UVM需要与其它语言产生交互呢?

其实就是SV和C之间的一种转换关系。

这就涉及到了一些应用场景,我们可以说几个看看。

(1)我们知道,在模块级乃至子系统级的验证,使用SV就完全够用了,而在更上面的层级,例如系统级,多采用大量的C代码组成。那么为了完成测试用例从子系统到系统级的复用,我们最好在子系统级开始就有意识地建立支持C测试的环境,并且使用一些基于C的测试用例,这样才能使得整体具有更好的复用性。

(2)处理器的需要。子系统测试时,不一定本身自带了处理器的硬件实例(Verilog编写的),因此在构建子系统时还要考虑如何模拟外部处理器对子系统的访问行为。

当然,我们直接加上一个外部的处理器实例是完全可以的,等验证完子系统的功能后再撤掉就行。注意,这个处理器实例也是verilog编写的。

但是,这种方法也存在了一些弊端:即使这个外部处理器再小巧,但硬件体积还是过大了,肯定会影响整个仿真的速度;针对不同子系统的预留接口(APB/AHB/AXI等),处理器子系统也要进行对应的调整吧;这种真实的处理器,必然要处理C代码,所以要进行编译、转换成二进制bin文件以及下载到memory中,还是太麻烦&#

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SystemVerilog的DPI(Direct Programming Interface)是一种与其他编程语言进行交互的接口。它由SystemVerilog层和其他语言层组成,这两层是相互独立的,并且它们的编译也是相互独立的。DPI的设计目的是为了满足在SystemVerilog中使用其他语言开发的模块的需求,特别是C和C++。在DPI的分层结构中,组件的规范和实现被明确分开,实际实现对于使用DPI的语言来说是透明的。例如,使用DPI调用的C函数对于SystemVerilog来说是一个黑盒子,而SystemVerilog无需更改即可对其进行调用。 具体使用DPI-C的过程如下: 1. 在C代码中,使用#include <svdpi.h>导入SystemVerilog的DPI头文件,并使用extern关键字声明SystemVerilog中的函数。 2. 在C代码中,编写调用SystemVerilog函数的代码。例如,调用名为apb_write的SystemVerilog任务,可以使用apb_write(0x3500000, 0x1)。 3. 在SystemVerilog代码中,使用import "DPI"语句导入DPI定义的上下文,并定义一个调用C函数的任务。例如,定义名为c_test的任务,输入参数为addr。 4. 在SystemVerilog代码中,使用initial块调用C函数。例如,使用c_test('h1000)和c_test('h2000)调用c_test任务。 5. 在SystemVerilog代码中,使用export "DPI"语句导出SystemVerilog任务。例如,导出名为apb_write的任务。 6. 使用VCS命令编译SystemVerilog和C代码。例如,使用vcs -sverilog hdl_top.sv c_test.c进行编译。 以上是使用DPI-C的简要示例说明,通过这种方式,可以在SystemVerilog和C之间实现函数和任务的互相调用。 #### 引用[.reference_title] - *1* *2* [【原创】SystemVerilog中传说的DPI](https://blog.csdn.net/m0_46345246/article/details/121199713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [[SV]SystemVerilog DPI应用实例](https://blog.csdn.net/gsjthxy/article/details/125785799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值