最近群里有人問我system Verilog和C怎么交互?在網上搜了一圈,發現相關資料比較少。所以,今天就給大家講一講system Verilog和C的交互。PLI全稱Program Language Interface,程序員可以通過PLI在verilog中調用C函數,這種訪問是雙向的。這些用戶定義的系統任務和函數的名稱必須以美元符號"$" 開頭。大家用得比較多的PLI函數有$display,$finish等。用戶可以自定義PLI函數,下面是一個簡單的PLI應用例子。第二種:System Verilog通過DPI和C進行交互。為了更加簡潔的連接C,system verilog 引入了DPI(Direct Programming Interface)。只要使用import聲明和使用,導入一個C子程序,就可以像調用System Verilog中的子程序一樣來調用它。相反,如果C想用system verilog里面的函數用export 聲明即可。下面是一個簡單的例子。第三種: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的幾種交互模式,小伙伴們學會了嗎?