最近有群友問我system Verilog 和C怎么交互,在網上搜了一圈發現資料比較少,今天這里就和大家講講system Verilog 和C的交互。話不多說直接上干活。
第一種 Verilog 通過PLI調用C函數。
PLI全稱 Program Language Interface,程序員可以通過PLI在verilog中調用C函數,這種訪問是雙向的。這些用戶定義的系統任務和函數的名稱必須以美元符號"" 開頭。大家用得比較多的PLI函數有display,$finish等。
用戶可以自定義PLI函數,下面是一個簡單的PLI應用例子。
以下是一段C代碼
下面是一段調用C的verilog的代碼
第二種 System Verilog 通過DPI和C進行交互
為了更加簡潔的連接C,system verilog 引入了DPI(Direct Programming Interface)。只要使用import聲明和使用,導入一個C子程序,就可以像調用System Verilog中的子程序一樣來調用它。相反,如果C想用system verilog里面的函數用export 聲明即可。下面是一個簡單的例子。
在System Verilog 里面調用C函數
C代碼和上面一樣
System Verilog的代碼如下
在C中調用System Verilog 函數
System Verilog 的代碼如下
C代碼如下
第三中 System Verilog 和C的交互方式是通過TLM1.0或者TLM2.0 進行交互。
這種交互方式主要應用在System Verilog 和systemc 上。對于systemc一般人用得比較少,所以這類交互也比較少用。下面是一個簡單的例子
Systemc 的編碼,其中cnn_inst的接口in是tlm1/tlm2類型port。
System verilog 的編碼,cpu_inst.out 為tlm1/tlm2類型的port。
第四種交互方式,通過CPU執行C代碼,從而實現verilog 和C的交互。
C代碼通過工具鏈編譯成CPU可以執行的匯編指令,再將匯編指令轉成對應的指令代碼,然后通過CPU讀取指令代碼產生激勵,實現C代碼所描述的功能。
以上是Verilog/System Verilog 和C的幾種交互模式,小伙伴們學會了嗎?
-
編碼器
+關注
關注
45文章
3639瀏覽量
134436 -
Verilog
+關注
關注
28文章
1351瀏覽量
110077 -
TLM
+關注
關注
1文章
32瀏覽量
24749 -
DPI
+關注
關注
0文章
36瀏覽量
11509
發布評論請先 登錄
相關推薦
評論