券商 做网站,做微信公众号用什么网站,织梦dedecms电影网站模板,广告优化是做什么的文章目录 前言一、方法介绍二、demo演示2.1 文件准备2.2 执行仿真2.3 仿真结果 总结 前言
在做IC验证EDA仿真过程中#xff0c;有时候需要调用C实现的参考模块#xff0c;我们可以利用DPI-C的功能#xff0c;实现SV侧调用C侧的函数。 在具体实现过程中#xff0c;我们可以… 文章目录 前言一、方法介绍二、demo演示2.1 文件准备2.2 执行仿真2.3 仿真结果 总结 前言
在做IC验证EDA仿真过程中有时候需要调用C实现的参考模块我们可以利用DPI-C的功能实现SV侧调用C侧的函数。 在具体实现过程中我们可以将C代码编译成一个so文件的动态库然后在SV侧加入这个so文件进行编译和仿真。 这样做的好处是C的具体实现对SV侧不可见SV侧只需要关心函数接口和参数的传递。 本文先介绍方法然后演示一个demo记录这个过程。 一、方法介绍 二、demo演示
2.1 文件准备
root_dir/c_src/lib.c
#includestdio.h
void c_print(char* str){printf([C] input srting is %s\n,str);
}root_dir/sv_src/tb.sv
module tb;import DPI-C function void c_print(string str);initial begin$display([SV] Using a share lib.so);c_print(USE share lib);endendmoduleroot_dir/work/makefile
c_mode:gcc ../c_src/lib.c -nostartfiles -fPIC -m64 -shared -I /eda/synopsys/vcs/U-2023.03-SP2-2/include -o ../c_src/lib.so #这里根据自己的情况使用VCS的绝对路径也可以使用环境变量代替
comp:bsub -Is vcs -full64 -sverilog incdir../sv_src incdir ../c_src ../sv_src/tb.sv -debug_accalldmptf -debug_regioncellencrypt -o demo_simv
run:bsub -Is ./demo_simv -sv_root ../c_src -sv_lib lib -l sim.log2.2 执行仿真
cd root_dir/work
make c_mode
make comp
make run2.3 仿真结果
[SV] Using a share lib.so
[C] input srting is USE share lib总结
本文主要记录了SV侧通过DPI-C调用C生成的动态库先介绍方法再演示demo。