主要内容

使用的DPI组件生成的考虑MATLAB

您可以导出一个MATLAB®函数作为具有直接编程接口(DPI)的组件,用于SystemVerilog模拟。HDL验证器™使用DPI包装器包装生成的C代码,该包装器在SystemVerilog仿真中与SystemVerilog瘦接口函数通信。

对于MATLAB,您可以使用dpigen函数。

请注意

你必须有一个MATLAB编码器™使用该特性的许可。

金宝app支持MATLAB数据类型

金宝app支持的MATLAB数据类型转换为SystemVerilog数据类型,如下表所示。当使用dpigen功能,使用PortsDataType属性选择兼容的C类型逻辑向量,或位向量数据类型。

生成SystemVerilog类型

MATLAB SystemVerilog
兼容的C类型 逻辑向量 位向量
uint8 字节无符号 逻辑(7:0) 位(7:0)
uint16 shortint无符号 逻辑15:0 位(15:0)
uint32 int无符号 逻辑(31:0) 位(31:0)
uint64 longint无符号 逻辑(63:0) 位(63:0)
int8 字节 逻辑(7:0)签署 位签署(7:0)
int16 shortint 逻辑(15:0)签署 位签署(15:0)
int32 int 逻辑(31:0)签署 位签署(31:0)
int64 longint 逻辑(63:0)签署 位签署(63:0)
逻辑 字节无符号 逻辑0时 位(0时)
fi(定点数据类型)

取决于定点字的长度。如果定点字长度大于主机字大小(例如,64位和32位),则不能通过MATLAB编码器你会得到一个错误。如果定点字长小于或等于主机字长,MATLAB编码器将定点数据类型转换为内置的C类型。

逻辑(n-1:0)

逻辑(n-1:0)签署

逻辑向量长度(n等于.符号继承自固定点类型。

位(n-1:0)

位签署(n-1:0)

位向量长度(n等于.符号继承自固定点类型。

shortreal
真正的
复杂的

编码器将复杂信号扁平化为SystemVerilog组件中的实部和虚部。

向量,矩阵

数组

例如,MATLAB中的一个4 × 2矩阵在SystemVerilog中被转换成一个包含8个元素的一维数组。默认情况下,编码器按列主顺序将矩阵扁平化。要更改为行主顺序,请使用-rowmajor选择与dpigen函数。有关更多信息,请参见生成使用行主数组布局的代码(MATLAB编码器)

结构

编码器将结构元素扁平化到SystemVerilog组件的单独端口中。

枚举数据类型 枚举

生成共享库

函数dpigen自动编译在SystemVerilog环境中运行导出的DPI组件所需的共享库。构建共享库的makefile具有扩展名_rtw.mk.例如,对于fun.m,则make文件名为fun_rtw.mk

在编译期间,函数dpigen生成库文件。

  • 窗户®64:函数_win64.dll

  • Linux®函数所以

函数是生成DPI组件的MATLAB函数的名称。

请注意

如果你在Windows上使用64位MATLAB,你会得到一个64位DLL,它只能与64位HDL模拟器一起使用。

确保MATLAB版本与HDL模拟器版本相匹配。

生成的测试工作台

函数dpigen还创建一个测试工作台。您可以使用这个测试台来验证生成的SystemVerilog组件在功能上是否等同于原始MATLAB函数。生成器运行MATLAB代码以保存输入和输出数据向量,以便在测试台上使用。这个测试台并不是用来替代您自己的应用程序的系统测试台。但是,在创建您自己的系统测试工作台时,您可以使用生成的测试工作台作为开始示例。

生成的输出

  • C和头文件从你的算法,生成MATLAB编码器

  • 用于DPI包装器的头文件,由HDL验证器生成

  • SystemVerilog文件,用于公开组件并添加控制信号

  • SystemVerilog包文件,包含DPI组件的所有函数声明

  • SystemVerilog测试台(带有-testbench选项)

  • 与HDL模拟器一起使用的数据文件(与-testbench选项)

  • HDL模拟器脚本,例如*,* . sh(-testbench选项)

  • Makefile*楼上

SystemVerilog生成包装器

由函数生成的所有SystemVerilog代码dpigen包含一组控制信号和初始化函数。

产生控制信号

  • clk:同步时钟

  • clk_enable:时钟使

  • 重置:异步复位

生成的初始化函数

初始化函数在模拟开始时调用。

例如:

导入DPI函数void DPI_Subsystem_initialize();

如果异步复位信号高(从0到1),初始化又被称为。

仿真考虑

在HDL环境中模拟DPI组件时,重置时钟,clk_enable表现如下:

  • clk_enable0时,不执行DPI输出函数,输出值不更新。

  • clk_enable1重置0时,DPI输出函数在时钟信号的正边缘上执行。

  • 重置1时,DPI组件的内部状态被设置为其初始值。该操作相当于使用清晰的函数来更新持久变量。然后输出值反映DPI分量的初始状态和电流输入值。有关持久变量的详细信息,请参见持续的变量

限制

  • 不支持可变大小的参数。金宝app

  • 不支持超过系统字长的大的定点数。金宝app

  • 不支持一些优化,比如常量折叠,因为它们会改变生成的C函数的接口。金宝app有关更多信息,请参见生成代码中的MATLAB编码器优化(MATLAB编码器)

  • 在SystemVerilog中,HDL验证器限制矩阵和向量为一维数组。例如,MATLAB中的4 × 2矩阵在SystemVerilog中被转换为一个包含8个元素的一维数组。

  • PostCodegen不支持配置对象中的回调。金宝app

相关的话题