数字IC仿真测试与C语言函数的DPI-C调用

数字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语言函数的设计实例

C语言函数的设计实例图

verilog仿真的设计实例

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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章