欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于VCS使用PLI在verilog中调用C程序

程序员文章站 2024-03-21 17:19:52
...

本文介绍一种在verilog中,运用PLI机制调用C程序的方法,其中的C程序,可以接受传参,且可以有返回值,仿真器选择的VCS。

  1. 编写C程序
    #include <stdio.h>
    //#include "vpi_user.h"
    //使用PLI有两种机制:TF/ACC机制,或者VPI机制
    
    void hello_calltf(int user_data, int reason)
    {
        int var,result;
        var = tf_getp(1);//取$hello调用时的第一个参数传递值
        result = var;
        tf_putp(0, result);//实际返回值
        0;
    }

     

  2. 建立链接,下面两种方式任选其一即可
    1. tab模式,编写xxx.tab文件,内容参考:
      $hello size=32 call=hello_calltf    //如果期望调用的C程序有返回值,则必须声明size=xxx,PLI视其为function,否则视其为task(无返回值)

       

    2. 注册模式,麻烦,略。
  3. 仿真选项
    vcs hello.c -P xxx.tab +vpi -CFLAGS ...

     

大功告成!

参考资料:

hello world

Verilog PLI Tutorial