最近有群友问我system Verilog 和C怎么交互,在网上搜了一圈发现资料比较少,今天这里就和大家讲讲system Verilog 和C的交互。话不多说直接上干货。
PLI全称 Program Language Interface,程序员可以通过PLI在verilog中调用C函数,这种访问是双向的。这些用户定义的系统任务和函数的名称必须以美元符号"$" 开头。大家用得比较多的PLI函数有$display,$finish等。
用户可以自定义PLI函数,下面是一个简单的PLI应用例子。第二种 System Verilog 通过DPI和C进行交互为了更加简洁的连接C,system verilog 引入了DPI(Direct Programming Interface)。只要使用import声明和使用,导入一个C子程序,就可以像调用System Verilog中的子程序一样来调用它。相反,如果C想用system verilog里面的函数用export 声明即可。下面是一个简单的例子。第三中 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的几种交互模式,小伙伴们学会了吗?