日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vpi_test1

發布時間:2024/1/1 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vpi_test1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VPI:Verilog與C相互調用

參考 :深入淺出FPGA-18-VPI

1 安裝C編譯器

windows環境下安裝Mingw。編譯器版本要和Questasim或modelsim版本相對應,(32位還是64位),并將bin目錄添加至環境變量path

2 編寫verilog和c程序

新建文件夾,編寫相應的hello.v 和 hello.c

hello.v

module hello;initial $hello; endmodule

hello.c?

/* * vpi simple test * rill,2014-03-21 */#include "vpi_user.h"static PLI_INT32 hello(PLI_BYTE8 * param) {vpi_printf("Hello Rill!\n");return 0; }// Associate C Function with a New System Task void registerHelloSystfs(void) {s_vpi_systf_data task_data_s;vpiHandle systf_handle;task_data_s.type = vpiSysTask;task_data_s.sysfunctype = vpiSysTask;task_data_s.tfname = "$hello";task_data_s.calltf = hello;task_data_s.compiletf = 0;task_data_s.sizetf = 0;task_data_s.user_data = 0;systf_handle = vpi_register_systf(&task_data_s);vpi_free_object(systf_handle); }// Register the new system task here void (*vlog_startup_routines[]) () = {registerHelloSystfs,0 // last entry must be 0 };

代碼意思先不要管,先能跑起來再說。

3 run code?

1 建立work文件夾,

vlib work

如果再modelsim/questa中新建工程時,目錄中會自動生成work文件夾,這里我們全程使用vscode,故需要自己手動建立work文件夾

2 在work中存放hello.c和hello.v相關信息

vlog hello.c
vlog hello.v

3 編譯鏈接

gcc -c -I E:\questasim\include hello.c

路徑為modelsim或questasim的路徑

gcc -shared -Bsymbolic -o hello.dll hello.o -L E:\questasim\win64 -lmtipli

4 運行

?vsim -c -pli hello.dll hello

run -all

運行結果

5 退出

quit

?后續再增加每條命令的具體意思。

?

總結

以上是生活随笔為你收集整理的vpi_test1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。