数字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;