主要内容

DPI组件生成的因素MATLAB

您可以导出一个MATLAB®作为一个组件与一个直接编程接口(DPI)用于SystemVerilog模拟。高密度脂蛋白校验™包装DPI包装器生成的C代码,与SystemVerilog薄SystemVerilog仿真接口函数。

使用MATLAB,你生成组件dpigen函数。

请注意

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

万博1manbetx支持MATLAB数据类型

万博1manbetxMATLAB支持数据类型转换为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位),那么这个数据类型不能被转换成一个SystemVerilog数据类型MATLAB编码器,你就会得到一个错误。如果定点单词长度小于或等于主机字大小,MATLAB编码器将定点数据类型转换为一个内置的C类型。

逻辑(n-1:0)

逻辑(n-1:0)签署

逻辑向量长度(n)=。符号是继承了不动点的类型。

位(n-1:0)

位签署(n-1:0)

位向量的长度(n)=。符号是继承了不动点的类型。

shortreal
真正的
复杂的

编码器平缓复杂信号的实部和虚部SystemVerilog组件。

向量,矩阵

数组

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

结构

编码器趋于平缓结构元素为独立的港口SystemVerilog组件。

枚举数据类型 枚举

生成共享库

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

在编译过程中,函数dpigen生成一个库文件。

  • 窗户®64:函数_win64.dll

  • Linux®:函数所以

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

请注意

如果你使用64位MATLAB在Windows上,你会得到一个64位的DLL,可只有一个64位的HDL模拟器。

确保你的MATLAB版本匹配您的HDL模拟器版本。

生成的测试工作台

函数dpigen还创建了一个试验台。您可以使用该试验台验证生成的SystemVerilog组件的功能与原来的MATLAB函数。发电机运行时MATLAB代码保存输入和输出数据向量用于试验台。这个试验台并不打算取代系统试验台为您自己的应用程序。不过,您可以使用生成的试验台作为一个开始的例子当创建您自己的系统试验台。

生成的输出

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

  • C和DPI包装器头文件,由高密度脂蛋白验证器生成

  • SystemVerilog文件公开组件和控制信号

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

  • SystemVerilog试验台(-testbench选项)

  • 数据文件使用的模拟器(高密度脂蛋白-testbench选项)

  • 高密度脂蛋白模拟器脚本,如*,* . sh(-testbench选项)

  • Makefile*楼上

SystemVerilog生成包装器

产生控制信号

SystemVerilog代码生成一个连续函数的函数dpigen包含一组控制信号。

  • clk:同步时钟

  • clk_enable:时钟使

  • 重置:异步复位

当生成SystemVerilog组合设计,生成的代码没有上面的控制信号。指定顺序或组合使用ComponentTemplateType论点的dpigen函数。

生成的初始化函数

所有SystemVerilog代码生成的dpigen功能包括一个初始化函数。的初始化在模拟的开始函数被调用。

例如:

导入“DPI”功能无效DPI_Subsystem_initialize ();

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

仿真考虑

在高密度脂蛋白环境模拟DPI组件时,重置,时钟,clk_enable表现如下:

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

  • clk_enable1重置0执行,DPI输出函数从积极的时钟信号的边缘。

  • 重置1DPI组件的内部状态设置为其初始值。这一行动相当于使用清晰的在MATLAB函数来更新持久性变量。然后输出值反映了DPI组件初始状态和当前输入值。持久性变量的更多细节,请参阅持续的变量

限制

  • 大型定点数字超过系统不支持单词长度。万博1manbetx

  • 一些优化,如常量折叠,不支持,因为他们改变界面生成的C函数。万博1manbetx有关更多信息,请参见MATLAB编码器优化生成的代码(MATLAB编码器)

  • 高密度脂蛋白验证器限制矩阵和向量在SystemVerilog一维数组。例如,一个4×2的矩阵在MATLAB矩阵转化为一维SystemVerilog八个元素的数组。

  • PostCodegen不支持在配置回调对象。万博1manbetx

相关的话题