modelsim用PLI的方法

modelsim用PLI的方法

本文简要说明windows下面的modelsim,如何调用PLI。

工具:

1.modelsim,我是6.5版

2.MinWG去官网下载

原理:

verilog提供的库非常有限,经常需要自己添加一些常用的“库函数”,而这些库函数,反映出来就是一些task,PLI的task。所谓PLI,就是programing language  interface。这里提供了一个调用自己的函数的借口。而自己的函数,是以dll的方式存在的,而这个dll需要放到一个特定的位置,被modelsim找到,然后就可以被verilog调用了。

 

步骤:

1.用文本编辑器编辑保存c文件。

hello.c,内容如下:

#include "stdio.h"
#include "<modelsim_dir>/include/veriuser.h"

static PLI_INT32 hello()
{
    printf("hello pli");
    
    return 0;
}

s_tfcell veriusertfs[] = {
{usertask, 0, 0, 0, hello, 0, "$hello"},
{0} /* last entry must be 0 */
};
其中<modelsim_dir>是你的modelsim的安装目录。veriuser.h包含了一些modelsim提供的PLI的头文件的信息和定义。比如PLI_INT32是什么东西。你可以打开veriuser.h这个文件来看看就明白了。

 

 2.用文本编辑器编辑保存v文件:

hello.v,内容如下:

module hello();
initial
begin
    $hello;
end
endmodule

3.打开MSYS,用gcc编译c文件,命令是:

gcc -c -l <modelsim_dir>\include hello.c 

gcc -shared -Bsymbolic -o hello.dll hello.o (-L<modelsim_dir>\win32 -lmtipli)括号中的可以不加

4.此时生成了一个hello.dll文件,将其拷贝到<modelsim_dir>/win32目录下面

5.打开modelsim,建立工程hello

6.在modelsim里面,敲入命令:

vsim -c -pli hello.dll hello

然后

run -all

你就可以看到打印出来的hello pli了 

说明

1.hello.c里面,一定要有s_tfcell veriusertfs[]这个东西,这个是提供给PLI,让verilog能够认出这个task的东西。这里规定了这个task的名字是hello等相关信息。

2.编译器,你可以选在MS的VC,命令就变了,因为编译器变了……(modulesim的手册)

3.编译的命令,首先是编译成.o文件,但是不链接,最后有一条命令去链接

 

参考

1.gcc的编译命令请参考gcc的手册 

2.PLI部分请参考modelsim的手册

 

展望

1.我现在还不知道如何通过PLI在verilog和C之间传递实际的数据,比如打开一个文件,读数据等等。这个哪位大哥知道的,可以留言给我,谢谢!

2.我还没有找到modelsim下面不用命令行仿真的方法,GUI仿真的命令不正确,哪位大哥知道的,也可以留言,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值