
SystemVerilog DPI 快速入门指南
XtremeDV
行走在码农和硅农之间
展开
-
DPI在实际项目中的使用
导入DPI函数作为UVM参考模型使用#include <stdio.h>#include <math.h>extern "C" int sum(int a, int b){ return a+b;}import "DPI-C" context function int sum(int a, int b);class refmod extends uvm_component; `uvm_component_utils(refmod) p原创 2020-10-29 16:10:33 · 1586 阅读 · 0 评论 -
DPI进阶
2.4.1 首先认识一下,压缩数组和非压缩数组压缩数组(Packed arrays)对于某些数据类型,你可能希望既可以访问整个值,也可以将其分成更小的元素。 例如,你可能有一个32位寄存器,有时你希望将其视为四个8位值,而在其他时候则视为单个无符号值。 压缩数组被视为数组和单个值。 与非压缩的数组不同,它存储为一组连续的没有未使用空间的位。可以方便地将其作为数组元素进行访问。压缩数组:在数据类型标识符名称之前声明的维度bit [7:0] p; // packed array of scalar bi原创 2020-10-29 16:09:48 · 4493 阅读 · 0 评论 -
DPI基础知识
2.3.1 DPI 数据类型映射当SystemVerilog与C环境交互时,会发生数据交换。 数据需要在两端以完全相同的方式解释,否则通信将失败。 SystemVerilog和C之间的数据交换通常使用DPI-C接口完成,该接口标准化类型对应关系和基本API(另请参见仿真器安装路径下的svdpi.h)。大多数SystemVerilog数据类型在C语言中具有直接的对应关系,而其他(例如,4值类型,数组)需要DPI-C定义的类型和API。 查看下表完整的数据类型映射关系。SystemVerilog原创 2020-10-29 16:09:03 · 11403 阅读 · 1 评论 -
为什么需要DPI
DPI出现的动机是双重的。有一种占优势地位的方法论要求接口应该允许构建异构系统(设计或测试平台),其中一些组件可以用除SystemVerilog之外的语言(或更多语言)编写。另一方面,实际需要一种简单有效的方法来连接通常用C或C++编写的现有代码,而不需要PLI或VPI的知识开销。DPI遵循黑盒的原则:组件的规范和实现明确分开,实际实现对系统的其余部分是透明的。因此,实现的实际编程语言也是透明的,尽管该标准仅定义了C链接语义。 SystemVerilog代码与外部语言之间的分离基于使用函数作为System原创 2020-10-29 16:07:34 · 724 阅读 · 0 评论 -
DPI的前世今生
1 DPI的前世今生PLI的诞生和衰落Verilog硬件描述语言为我们提供了描述硬件电路的一种高级语言形式,其类C的风格,让我们写起硬件电路,如果写C代码一样轻松愉悦。标准组织,想尽办法,为Verilog,添加更多的轮子,让它能跑得更快,跳的更高。各大EDA厂商,也在为基于verilog的仿真器,做各种有利的工具,以便用户使用。这里,我提出一个问题,用户是如何获得Verilog语言描述的电路的内部数据结构信息的?不同的EDA厂商,如何都能让自己的仿真器中,在仿真verilog的tb时,生成FSDB波形原创 2020-10-29 16:04:05 · 1813 阅读 · 2 评论