最近有群友问我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的几种交互模式,小伙伴们学会了吗?
作者:IC bug 猎人
原文链接:https://mp.weixin.qq.com/s/crY5DAuZupZr-NbMYWOeFA
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。