1. PLI 功能介绍
Verilog PLI(Programming Language Interface )是一种Verilog代码调用C/C++函数的机制。它能让Verilog像调用一些系统调用(如$display/$stop/$random)一样调用用户编写的C/C++函数,这样我们可以用C/C++语言开始自己的system task/function, 来实现用verilog不太方便的功能,并与外界建立了联系。
PLI可以完成如下功能:
功耗分析
代码覆盖率工具
修改Verilog仿真数据结构(如修改为更精确的延时,即sdf反标)
自定义输出显示
联合仿真
设计的调试功能
仿真分析
加速仿真的C模型接口
Testbench建模
Verilog PLI提供了一些访问verilog内部数据结构的
任务功能程序集 (TF routines): 大部分以tf_开头,主要用于一些用户定义系统任务和函数变量的操作,工具函数(比如设置回调函数和写数据到输出)
访问程序集 (ACC routines): 第二代PLI. 所有以acc_开头。提供了对象导向的对SV结构的访问。主要用于访问和修改信息,比delay value, logic value. ACC routines和TF routines有部分重复。
验证过程接口程序集 (VPI routines): 第三代PLI。大部分以vpi_开头。提供了对象导向的对SV结构, 行为, assertion, coverage 对象的访问。 它包含了TF和ACC routines的所有功能。
2. 用户定义task/function命名
规则如下:
第一个字符必须是$<