您可以导出一个MATLAB®函数作为具有直接编程接口(DPI)的组件,用于SystemVerilog模拟。HDL验证器™使用DPI包装器包装生成的C代码,该包装器在SystemVerilog仿真中与SystemVerilog瘦接口函数通信。
对于MATLAB,您可以使用dpigen
函数。
请注意
你必须有一个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类型。 |
逻辑向量长度( |
位向量长度( |
单 |
shortreal |
||
双 |
真正的 |
||
复杂的 |
编码器将复杂信号扁平化为SystemVerilog组件中的实部和虚部。 |
||
向量,矩阵 | 数组 例如,MATLAB中的一个4 × 2矩阵在SystemVerilog中被转换成一个包含8个元素的一维数组。默认情况下,编码器按列主顺序将矩阵扁平化。要更改为行主顺序,请使用 |
||
结构 |
编码器将结构元素扁平化到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代码dpigen
包含一组控制信号和初始化
函数。
clk
:同步时钟
clk_enable
:时钟使
重置
:异步复位
的初始化
函数在模拟开始时调用。
例如:
导入DPI函数void DPI_Subsystem_initialize();
如果异步复位信号高(从0到1),初始化
又被称为。
在HDL环境中模拟DPI组件时,重置
,时钟
,clk_enable
表现如下:
不支持可变大小的参数。金宝app
不支持超过系统字长的大的定点数。金宝app
不支持一些优化,比如常量折叠,因为它们会改变生成的C函数的接口。金宝app有关更多信息,请参见生成代码中的MATLAB编码器优化(MATLAB编码器).
在SystemVerilog中,HDL验证器限制矩阵和向量为一维数组。例如,MATLAB中的4 × 2矩阵在SystemVerilog中被转换为一个包含8个元素的一维数组。
的PostCodegen
不支持配置对象中的回调。金宝app