1、是什么??
DPI(Direct Programming Interface),全称直接编程接口,是SV与其它语言(C/C++)交互的接口,基本上是唯一接口了。
2、为什么??
说完是什么,那么我们可以考虑一下了,为什么需要这个接口呢?或者说为什么SV/UVM需要与其它语言产生交互呢?
其实就是SV和C之间的一种转换关系。
这就涉及到了一些应用场景,我们可以说几个看看。
(1)我们知道,在模块级乃至子系统级的验证,使用SV就完全够用了,而在更上面的层级,例如系统级,多采用大量的C代码组成。那么为了完成测试用例从子系统到系统级的复用,我们最好在子系统级开始就有意识地建立支持C测试的环境,并且使用一些基于C的测试用例,这样才能使得整体具有更好的复用性。
(2)处理器的需要。子系统测试时,不一定本身自带了处理器的硬件实例(Verilog编写的),因此在构建子系统时还要考虑如何模拟外部处理器对子系统的访问行为。
当然,我们直接加上一个外部的处理器实例是完全可以的,等验证完子系统的功能后再撤掉就行。注意,这个处理器实例也是verilog编写的。
但是,这种方法也存在了一些弊端:即使这个外部处理器再小巧,但硬件体积还是过大了,肯定会影响整个仿真的速度;针对不同子系统的预留接口(APB/AHB/AXI等),处理器子系统也要进行对应的调整吧;这种真实的处理器,必然要处理C代码,所以要进行编译、转换成二进制bin文件以及下载到memory中,还是太麻烦&#