发新话题
打印

[原创]PLI步步为营 -- 二、PLI中的helloworld程序

[原创]PLI步步为营 -- 二、PLI中的helloworld程序

在学习几乎所有的编程语言时,基本上学习的第一个程序就是helloworld程序,在PLI学习中,也从helloworld开始!^_^ 我们知道要完成一个PLI程序,需要有3个文件:veriuser.c, hello.c, hello.v。   veriuser.c链接C语言函数和verilog系统函数之间的对应关系。   hello.c 中写着C语言函数hello()   hello.v 里调用系统函数以执行hello.c里的hello()函数。 1. veriuser.c的编写   2. hello.c 编写   在PLI的C程序中,不需要main函数,因为这里的C语言文件不需要单独编译执行。只需要提供单独的函数就可以。   以下是hello.c的代码:  
引用:
hello()   {     io_printf(" Hello World ! ");   }  
3. hello.v 的编写   在hello.v中调用系统任务来调用hello()函数,以下是hello.v 代码:
引用:
  module hello();   initial $hello(); endmodule
现在3个函数都编写完毕了。其中的C语言需要编译执行成C库文件。 用以下命令执行:
引用:
gcc -c -o hello.o -I $(CDS_INSTALL_DIR)/include hello.c gcc -c -o veriuser.o -I $(CDS_INSTALL_DIR)/include veriuser.c gcc -shared -o hello.so veriuser.c hello.c
在编译完库文件以后,只需要在跑simulation的时候,加上调用PLI选项,调用方式如下:
引用:
ncverilog +access+wrc +loadpli1=hello.so:hellostrap
结果如下:
引用:
今天就讲到这里, 下一节讲述另一个PLI重要程序:从verilog获取值,传递到C程序中。
With your idea, Carry out together.

TOP

收藏拉,挺全的嘛,不错不错

TOP

请问楼主,还有没有后续了??

TOP

强烈期待后续文章!!

TOP

发新话题