寫過Verilog和systemverilog的人肯定都用過系統自定義的函數$display,這是預定好的,可以直接調用的功能。但是當Verilog中的task和function不能滿足仿真需求時,這就需要自定義一些任務和函數。
Verilog中使用編程語言接口PLI(Program Language Interface)編程語言接口來和C語言程序交互,它提供了一套C語言函數,我們可以調用這些集成函數編寫軟件C程序。RTL代碼編譯的時候,這些軟件C程序也會集成到仿真環境中。仿真運行后,使用系統任務調用的方式,就可以去訪問仿真中的數據結構,也就是說PLI提供一個使得用戶自帶C函數能夠在運行時間訪問仿真數據結構的接口。
PLI先后經歷了3代的發展: 1985年TF Task/Function interface,第一代VerilogPLI。包含一整套C語言函數庫,函數定義在verisuer.h文件中,一般稱為TF子程序,主要作用是把任務/函數參數傳遞給C函數。TF的缺點是它定義系統任務/函數,函數返回值以及需要關聯任務/函數名稱到C函數的機制。該機制并不是標準化的, 這就意味著每個仿真器有不同的PLI接口機制。TF的一個缺點是定義系統任務/函數名稱、函數返回類型以及與任務/函數名稱相關聯的 C函數的機制。這種機制不是標準化的,這意味著每個模擬器都有不同的 PLI 接口機制。 1
989年ACC Access interface,第二代VerilogPLI。引入了訪問程序庫的C函數,即ACC函數庫,由單獨的acc_user.h定義,函數均以acc_作為前綴。它是作為TF的附加庫。只是增加了搜索仿真數據結構的功能,但是不能訪問RTL和行為級的設計部分。此外,復雜的,因仿真器而異的接口機制也是ACC接口的一大缺點。
1995年VPI Verilog Programming Interface,第三代Verilog PLI。VPI是TF和ACC的超集擴展庫。VPI庫定義在C函數庫文件vpi_user.h。使用VPI, 用戶能夠訪問整個仿真數據結構, 包括系統任務/函數的參數(替換TF) 以及設計的層次結構單元(替換ACC)。
DPI的發展相對來說比較緩慢 Accellera在2003年4月發布了包括DPI在內的SystemVerilog 3.1標準,隨后在3.1A版本中進一步對DPI進行了加強。systemverilog中使用DPI(Direct Programming Interface),更加簡單地連接C、C++或者其他的非Verilog語言。你只需要使用import語句把C函數導入到,就可以像調用systemverilog的子程序一樣來使用它。使用DPI, 用戶無需再像Verilog PLI那樣, 事先編寫系統任務/函數名稱,然后通過復雜的PLI庫間接傳遞數值回C函數。但是DPI不能直接訪問仿真數據結構的內部,這限制了DPI的應用。
SystemVerilog DPI和Verilog PLI的比較
DPI絕不是為了替代PLI,而是彌補PLI中的不足,相信不久的未來能出現一個新的PI標準更好得結合兩者的優點。
審核編輯:劉清
-
Verilog
+關注
關注
28文章
1365瀏覽量
111779 -
C語言
+關注
關注
180文章
7630瀏覽量
140183 -
RTL
+關注
關注
1文章
388瀏覽量
60643 -
DPI
+關注
關注
0文章
39瀏覽量
11666
原文標題:從Verilog PLI到SystemVerilog DPI的演變
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
buck電路原理圖講解 buck電路的演變過程

電機瞬變過程
數字式稱重傳感器的功能演變過程
【視頻分享】降壓電路的演變過程
The Verilog PLI Handbook

Verilog手冊的公眾責任

升壓變換器二種結構的演變過程資料下載

使用Verilog/SystemVerilog硬件描述語言練習數字硬件設計
解碼國產EDA數字仿真器系列之二 | 如何實現全面的SystemVerilog語法覆蓋?

談談Verilog/System Verilog和C的幾種交互模式

buck電路的演變過程

淺析can技術的演變過程

評論