在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13108|回复: 28

[原创] 本人对dpi一些文档的翻译,和自身使用的一些总结

[复制链接]
发表于 2015-12-16 17:04:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
背景      目前我用sv和C++来搭建uvm平台,c++主要是作为reference model的编写语言,实现一些算法。
然后
      我会翻译一些外文的DPI资料在这里,最后做一些使用上的总结。

更新会比较慢,只是给验证区,增加点人气。
 楼主| 发表于 2015-12-16 17:06:00 | 显示全部楼层
我道行尚浅 ,欢迎大家提意见
发表于 2015-12-16 23:18:38 | 显示全部楼层
强烈支持
发表于 2015-12-18 12:56:12 | 显示全部楼层
强烈支持楼主
 楼主| 发表于 2015-12-21 13:54:13 | 显示全部楼层
本帖最后由 gogosese 于 2015-12-24 12:52 编辑

dpi介绍
          Direct Programming Interface是sv和其他编程语言的接口。DPI包括两个互相独立的层,一个是sv,一个是其他编程语言。
以c++为例
           sv ⇌dpi ⇌C++
          DPI基本就是这个意思,sv的函数可以通过dpi拿到c++里面用,而c++的函数也可以通过dpi直接给sv用
          唯一要注意的东西,就是,这些函数都是不消耗仿真时间,但可以通过输出task的方式,来达到时序控制的效果
          关于dpi的编译,sv和c++会各自使用适合自身语言的编译器进行编译,不用关心这个
          特别注意的是,dpi目前只支持c,使用c++的话要加上extern c
使用dpi有两点原因,一个是验证技术发展至今,一个验证系统里面需要用到多种语言来建模,sv需要这样一个东西
第二个是 PLI VPI 之类的太tmd复杂了,用起来麻烦
 楼主| 发表于 2015-12-21 14:28:31 | 显示全部楼层
任务和函数
   其实,其实,dpi自称是支持时序的,这种方式呢,叫做调用task。
         但是很遗憾,c只能作为函数被调用,所以如我之前所说的,别太想同步的事情。
dpi使用外部语言的输入输出函数,需要先声明,声明的方式和普通函数一样,位置都是任意的,只要用import、export这样的关键词就好了,声明的时候可以加上input output之类的参数,给一个简单例子,帮助理解import "DPI" context task c_test(input int base_addr);
重要的事情再重复一遍,使用这些import outport函数的时候,和sv自身的函数一模一样,就当sv的函数用。
发表于 2015-12-23 16:39:11 | 显示全部楼层
回复 6# gogosese


    想知道楼主用的是什么EDA工具来进行验证的
发表于 2015-12-24 10:20:49 | 显示全部楼层
纠正楼主一个基本的错误,“唯一要注意的东西,就是,这些函数都是不消耗仿真时间,这意味着,别想同步的事了”。
首先,C函数是可以消耗仿真时间的,比如C函数本身调用SV的task(在sv中export到C中的task);
其次,在结合import和export以及task之后,SV和C/C++之间做一些同步是完全没有问题的。
 楼主| 发表于 2015-12-24 11:39:59 | 显示全部楼层
回复 7# liuguangxi


   vcs
 楼主| 发表于 2015-12-24 11:42:07 | 显示全部楼层
回复 8# asic_wang


   很对,当时没有看到输出task这里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 12:31 , Processed in 0.027346 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表