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; endmodulehello.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
?后續再增加每條命令的具體意思。
?
總結
- 上一篇: java显示多个地区时钟_妙用Java多
- 下一篇: ipsec vpi_VPI的完整形式是什