谈谈Verilog/System Verilog和C的几种交互模式

电子说

1.3w人已加入

描述

最近有群友问我system Verilog 和C怎么交互,在网上搜了一圈发现资料比较少,今天这里就和大家讲讲system Verilog 和C的交互。话不多说直接上干活。

第一种 Verilog 通过PLI调用C函数。

PLI全称 Program Language Interface,程序员可以通过PLI在verilog中调用C函数,这种访问是双向的。这些用户定义的系统任务和函数的名称必须以美元符号"" 开头。大家用得比较多的PLI函数有display,$finish等。

用户可以自定义PLI函数,下面是一个简单的PLI应用例子。

以下是一段C代码

编码器

下面是一段调用C的verilog的代码

编码器

第二种 System Verilog 通过DPI和C进行交互

为了更加简洁的连接C,system verilog 引入了DPI(Direct Programming Interface)。只要使用import声明和使用,导入一个C子程序,就可以像调用System Verilog中的子程序一样来调用它。相反,如果C想用system verilog里面的函数用export 声明即可。下面是一个简单的例子。

在System Verilog 里面调用C函数

C代码和上面一样

编码器

System Verilog的代码如下

编码器

在C中调用System Verilog 函数

System Verilog 的代码如下

编码器

C代码如下

编码器

第三中 System Verilog 和C的交互方式是通过TLM1.0或者TLM2.0 进行交互。

编码器

这种交互方式主要应用在System Verilog 和systemc 上。对于systemc一般人用得比较少,所以这类交互也比较少用。下面是一个简单的例子

Systemc 的编码,其中cnn_inst的接口in是tlm1/tlm2类型port。

编码器

System verilog 的编码,cpu_inst.out 为tlm1/tlm2类型的port。

编码器

第四种交互方式,通过CPU执行C代码,从而实现verilog 和C的交互。

C代码通过工具链编译成CPU可以执行的汇编指令,再将汇编指令转成对应的指令代码,然后通过CPU读取指令代码产生激励,实现C代码所描述的功能。

以上是Verilog/System Verilog 和C的几种交互模式,小伙伴们学会了吗?

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分