引言
本文介绍了一个最简单的例子,实现再sv中使用c函数,同时在c中使用sv中定义的task,编译器使用的是vcs
sv里的代码
sv想要引用c语言的函数,需要通过 import "DPI-C"的方式将c函数导入当前作用域,C语言与SV关于函数参数的映射关系可以参考绿皮书。
![sv代码](https://i-blog.csdnimg.cn/blog_migrate/c3671e921b053e9562b4826703ff9d79.png)
c代码
由于c函数中是不能添加延迟的,所以我们通过调用sv中的task来实现添加延迟的功能,将sv中的task导出供C模块使用用到的是export “DPI-C” task
![c代码](https://i-blog.csdnimg.cn/blog_migrate/392df3bd47df5fae618ed755a681e62a.png)
vcs需要添加如下参数(c文件跟sv文件混在一起编译)
![Makefile代码](https://i-blog.csdnimg.cn/blog_migrate/a67bf6cd03760df36af4213f19a73421.png)
仿真结果
![Alt 仿真结果](https://i-blog.csdnimg.cn/blog_migrate/e3177ffae5c72b348f7b2447a5365e21.png)