写过verilog和systemverilog的人肯定都用过系统自定义的函数$display,这是预定好的,可以直接调用的功能。但是当verilog中的task和function不能满足仿真需求时,这就需要自定义一些任务和函数。
verilog中使用编程语言接口pli(program language interface)编程语言接口来和c语言程序交互,它提供了一套c语言函数,我们可以调用这些集成函数编写软件c程序。rtl代码编译的时候,这些软件c程序也会集成到仿真环境中。仿真运行后,使用系统任务调用的方式,就可以去访问仿真中的数据结构,也就是说pli提供一个使得用户自带c函数能够在运行时间访问仿真数据结构的接口。
pli先后经历了3代的发展: 1985年tf task/function interface,第一代verilogpli。包含一整套c语言函数库,函数定义在verisuer.h文件中,一般称为tf子程序,主要作用是把任务/函数参数传递给c函数。tf的缺点是它定义系统任务/函数,函数返回值以及需要关联任务/函数名称到c函数的机制。该机制并不是标准化的, 这就意味着每个仿真器有不同的pli接口机制。tf的一个缺点是定义系统任务/函数名称、函数返回类型以及与任务/函数名称相关联的 c函数的机制。这种机制不是标准化的,这意味着每个模拟器都有不同的 pli 接口机制。 1
989年acc access interface,第二代verilogpli。引入了访问程序库的c函数,即acc函数库,由单独的acc_user.h定义,函数均以acc_作为前缀。它是作为tf的附加库。只是增加了搜索仿真数据结构的功能,但是不能访问rtl和行为级的设计部分。此外,复杂的,因仿真器而异的接口机制也是acc接口的一大缺点。
1995年vpi verilog programming interface,第三代verilog pli。vpi是tf和acc的超集扩展库。vpi库定义在c函数库文件vpi_user.h。使用vpi, 用户能够访问整个仿真数据结构, 包括系统任务/函数的参数(替换tf) 以及设计的层次结构单元(替换acc)。
dpi的发展相对来说比较缓慢 accellera在2003年4月发布了包括dpi在内的systemverilog 3.1标准,随后在3.1a版本中进一步对dpi进行了加强。systemverilog中使用dpi(direct programming interface),更加简单地连接c、c++或者其他的非verilog语言。你只需要使用import语句把c函数导入到,就可以像调用systemverilog的子程序一样来使用它。使用dpi, 用户无需再像verilog pli那样, 事先编写系统任务/函数名称,然后通过复杂的pli库间接传递数值回c函数。但是dpi不能直接访问仿真数据结构的内部,这限制了dpi的应用。
systemverilog dpi和verilog pli的比较
dpi绝不是为了替代pli,而是弥补pli中的不足,相信不久的未来能出现一个新的pi标准更好得结合两者的优点。
塑料插座面板的模流分析及参数优化分析
浅析智能化技术与无人机的结合
光谱共焦的测量原理及厚度测量模式
江苏泰兴先进半导体高端装备项目开工 总投资达3亿美元
平板变压器的工作原理
从Verilog PLI到SystemVerilog DPI的演变过程
工信部移动物联网生活智慧化应用案例锦集
LED电路保护的必要性 LED损坏的原因 保护LED电路小绝招
带你读懂3D结构光和ToF是什么又有何用
美国的限售禁令 VS 中国的实体清单,谁将获胜?
打造青岛“芯”名片,多个集成电路产业项目落户即墨,
全三维数字化协同设计思路剖析--主导科技Q&A
IBM 范斌:金融领域 AI 大有可为,但可解释性、伦理等因素构成巨大挑战
“传感器+LED灯具”加速传统照明革新
创意LED环的制作
航天遥感红外探测器需求与发展综述
噪声对策基础(一):什么是EMI滤波器?
盘点无人机避障技术原理及厂商
荣耀8评测:为荣耀9让路,华为荣耀8直降400,配置双面玻璃+独特光纹,颜值仍然抢眼!
TE亮相2017 IAS, 展现“小身材连接大智慧”硬实力