DPI组件生成的注意事项MATLAB
您可以导出MATLAB®作为具有直接编程接口(DPI)的组件,用于SystemVerilog模拟。HDL Verifier™用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类型。 |
逻辑向量长度( |
位向量长度( |
单 |
shortreal |
||
双 |
真正的 |
||
复杂的 |
编码器在SystemVerilog组件中将复杂信号平抑为实部和虚部。 |
||
向量,矩阵 | 数组 例如,MATLAB中的4 × 2矩阵在SystemVerilog中转换为一维的8个元素数组。默认情况下,编码器将矩阵按列-主序排列。若要更改为行主序,请使用 |
||
结构 |
编码器将结构元素平展到SystemVerilog组件中的独立端口中。 |
||
枚举数据类型 | 枚举 |
生成的共享库
函数dpigen
自动编译在SystemVerilog环境中运行导出的DPI组件所需的共享库。构建共享库的makefile具有扩展名_rtw.mk
.例如,对于fun.m
,则make文件的名称为fun_rtw.mk
.
在编译期间,函数dpigen
生成一个库文件。
窗户®64:
函数
_win64.dllLinux®:
函数
所以
函数
是生成DPI组件的MATLAB函数的名称。
请注意
如果在Windows上使用64位MATLAB,则会得到一个64位DLL,它只能与64位HDL模拟器一起使用。
确保您的MATLAB版本与HDL模拟器版本匹配。
生成测试台
函数dpigen
还创建一个测试台架。您可以使用这个测试平台来验证生成的SystemVerilog组件在功能上与原始的MATLAB函数等效。生成器运行MATLAB代码以保存输入和输出数据向量,以便在测试台上使用。此测试台并不打算取代您自己应用程序的系统测试台。但是,在创建自己的系统测试台架时,您可以使用生成的测试台架作为开始示例。
生成的输出
C和头文件从您的算法,由MATLAB编码器
C和DPI包装器的头文件,由HDL验证器生成
SystemVerilog文件,它公开组件并添加控制信号
包含DPI组件所有函数声明的SystemVerilog包文件
SystemVerilog测试平台(使用
-testbench
选项)与HDL模拟器一起使用的数据文件(与
-testbench
选项)HDL模拟器脚本,例如
*,
或* . sh
(-testbench
选项)Makefile
*楼上
生成的SystemVerilog包装器
产生的控制信号
为逐个函数的顺序函数生成的SystemVerilog代码dpigen
包含一组控制信号。
clk
:同步时钟clk_enable
:时钟使能重置
:异步复位
在为组合设计生成SystemVerilog时,生成的代码不具有上述控制信号。属性指定顺序的或组合的ComponentTemplateType
的参数dpigen
函数。
生成的Initialize函数
生成的所有SystemVerilog代码dpigen
函数包含初始化
函数。的初始化
函数在模拟开始时调用。
例如:
导入DPI函数void DPI_Subsystem_initialize()
如果异步复位信号高(从0到1),初始化
再次调用。
仿真考虑
在HDL环境中模拟DPI组件时,重置
,时钟
,clk_enable
行为如下:
限制
不支持超过系统字长的大定点数。金宝app
不支持某些优化,比如常量折叠,因为它们会改变生成的C函数的接口。金宝app有关更多信息,请参见生成代码中的MATLAB编码器优化(MATLAB编码器).
HDL验证器将矩阵和向量限制为SystemVerilog中的一维数组。例如,MATLAB中的4 × 2矩阵在SystemVerilog中转换为8个元素的一维数组。
的
PostCodegen
不支持配置对象中的回调。金宝app