微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 本人对dpi一些文档的翻译,和自身使用的一些总结

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

时间:10-02 整理:3721RD 点击:
背景目前我用sv和C++来搭建uvm平台,c++主要是作为reference model的编写语言,实现一些算法。
然后
我会翻译一些外文的DPI资料在这里,最后做一些使用上的总结。
更新会比较慢,只是给验证区,增加点人气。

我道行尚浅 ,欢迎大家提意见

强烈支持

强烈支持小编

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复杂了,用起来麻烦

任务和函数
   其实,其实,dpi自称是支持时序的,这种方式呢,叫做调用task。
但是很遗憾,c只能作为函数被调用,所以如我之前所说的,别太想同步的事情。
dpi使用外部语言的输入输出函数,需要先声明,声明的方式和普通函数一样,位置都是任意的,只要用import、export这样的关键词就好了,声明的时候可以加上input output之类的参数,给一个简单例子,帮助理解import "DPI" context task c_test(input int base_addr);
重要的事情再重复一遍,使用这些import outport函数的时候,和sv自身的函数一模一样,就当sv的函数用。

想知道小编用的是什么EDA工具来进行验证的

纠正小编一个基本的错误,“唯一要注意的东西,就是,这些函数都是不消耗仿真时间,这意味着,别想同步的事了”。
首先,C函数是可以消耗仿真时间的,比如C函数本身调用SV的task(在sv中export到C中的task);
其次,在结合import和export以及task之后,SV和C/C++之间做一些同步是完全没有问题的。

vcs

很对,当时没有看到输出task这里

技术上的论点,如果能用yes和no区分的时候,我们还是要直白的说出来,不是针对小编。
共同提高,小编加油!

十分感谢,只有大家指出问题,才能共同提高,我给您私信了,我会重新整理笔记,到时候先发给您看看,然后发帖,不能误人子弟

期待小编的更新。

对小编的钻研精神赞一个

请问小编,用sv调用matlab的.m文件可行么,如果可以,具体需要怎么做,谢谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top