1. 准备条件
实现sv和c语言的联动,需要事先准备好:
1.1 c语言代码文件
以test.c为例:
1.2 sv语言文件
以top.sv为例:
1.3 vcs编译和仿真
实现sv和c的编译方式有多种,下面将逐一介绍:
1.3.1 同时编译sv和c
这种方式的特点是:无论sv或者c或者v文件有了修改,所有文件都必须重新编译一遍,在大型项目中,无疑增加了编译负担。假如验证人员只修改了sv文件,不想重新编译c文件,该如何操作?具体见第二种方式。
1.3.2 只在vcs编译阶段载入DPI动态库
如果c文件没有修改,那么就可以在第一次编译c文件后生成动态链接库,后续只修改sv文件后就可以跳过c文件的编译过程,直接在仿真阶段载入DPI动态链接库即可。即:
第一步:生成DPI动态链接库.so文件
第二步:在vcs编译阶段调用DPI动态库
2. 在sv中调用c函数
2.1 C程序里通过extern关键字导出要调用的函数
举例:
2.2 sv程序里通过import关键字导入要调用的函数
举例: