数字集成电路设计-15-DPI(续)

本文深入探讨了在数字集成电路设计中,如何使用SystemVerilog(SV)的DPI(Dynamic Procedural Interface)来调用C语言函数,并实现SV任务与函数的交互。通过一个实例展示了C语言如何调用SV的task和function,强调了scope的重要性以及C端不区分SV的task和function。同时,文章提到了两种用C模拟硬件并行行为的方法:调整模块顺序和使用变量及函数模拟reg行为。
摘要由CSDN通过智能技术生成

引言


对于SV,无论是构造测试激励,还是模拟硬件的并行行为,DPI都是非常方便的。上次我们介绍了SV里面通过“import”导入并调用C函数。

本小节,我们通过一个简单的例子来说明C语言函数如何调用SV的task和function。


1,SV部分


/*
* test.v  Rill create for dpi test at 2014-10-20
*/

`timescale 1ns/1ns

module tb;
   import "DPI-C" context function int c_func(input int num);// or import "DPI-C" context task c_display(input int num);
      
      reg tmp;
      
      initial begin
	 #10
	   tmp = c_func(1);
      end

   m1 M1();
   m2 M2();
   
endmodule // top

module m1;
   import "DPI-C" context function void c_get_m1_scope();
   export "DPI" function m1_add;

   reg tmp;
   reg [7:0] m1_value;
   
   function int m1_add(input [7:0] num);
      m1_add = num + m1_value; //or return (num + m1_value);
   endfunction // m1_add

   initial begin
      c_get_m1_scope();
      m1_value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值