數字IC仿真測試與C語言函數的DPI-C調用
在深入數字IC仿真設計後,經常需要用到C語言相關函數或任務的配合使用,在system verilog中引入了DPI(Direct Programming Interface)能夠更方便簡潔的連接到C,C++或者其他編程語言進行連仿。只要使用import 聲明就可以調用導入一個C程序,就像在調用System verilog 中的子函數function一樣。
import的用法介紹
import “DPI-C” function counter(output out ,input in,input rst_n,input load);
import聲明是將C語言函數counter轉化爲數字IC語言裏的function。
output是將C語言函數counter的輸出調用到數字IC裏面,數據方向是:C–>IC;
input是將數字IC的輸入導入到C語言函數counter裏面,數據方向是:IC—>C;
C語言與數字IC的數據對應關係如下所示:
0《》0x0,1《》0x1,z《》0x2,x《》0x3;
C語言函數的設計實例
verilog仿真的設計實例
仿真測試結果
仿真結果如下圖所示:一開始out爲初始的42,後面因爲rst_n=0,load=0,就從0開始加1變化,數據out從C語言函數調用到了數字IC設計。
DPI最常調用的C語言函數
import “DPI-C” function real sin(input real x);
import “DPI-C” function real round(input real x);
import “DPI-C” function real floor(input real x);
import “DPI-C” function real ceil(input real x);
round(x):返回x四捨五入的整數
floor(x):返回不大於x的最小整數;
ceil(x):返回不小於x的最小整數;
round(2.6)=3;floor(2.6)=2;ceil(2.6)=3;