在SystemVerilog DPI组件中使用可变大小的矢量
本示例展示了如何配置、生成和使用具有可变长度输入或输出的SystemVerilog DPI (SVDPI)组件。
设计任务
当您从包含变量大小的矢量输入或输出的MATLAB®函数生成SVDPI时,结果是具有变量大小的输入或输出的SystemVerilog模块。按照以下示例在SystemVerilog环境中配置、生成和使用该组件。
MATLAB函数
本例使用了该函数varSizeVector金宝appSupport
,一个输入大小的窦函数vec
是可变的。函数的输出来自于输入,因此输出大小也是可变的。
Testbench
使用提供的varSizeVector金宝appSupport_tb
试验台用固定大小的信号刺激功能。然后,生成一个SystemVerilog测试平台,对生成的SystemVerilog模块进行测试。您可以稍后更改生成的SystemVerilog测试平台的端口类型(或编写一个新的测试平台),而不需要从varSizeVector金宝appSupport
函数。
配置生成选项
要指定受支持的工具链,请使金宝app用
配置对象。将build_type设置为coder.config
(MATLAB编码器)“dll”
.
configObj = code .config(“dll”);
然后,将工具链设置为受支持的模拟器。金宝app在MATLAB工作区中双击生成的对象,打开配置对象对话框。选择硬件在左边窗格上,然后在下面构建过程集工具链到受支持的金宝app模拟器。
或者,您也可以在MATLAB命令提示符中设置工具链。例如,这段代码将工具链设置为Mentor Graphics QuestaSim/Modelsim(64位Windows)
.
configObj。工具链='Mentor Graphics QuestaSim/Modelsim(64位Windows)';
生成SystemVerilog DPI组件
要生成SystemVerilog模块,请使用dpigen
函数。
配置对象必须传递给
dpigen
函数使用配置
论点。使用
arg游戏
参数指定生成端口的大小。要将上界值设置为变长向量,请在编码器。类型
对象。例如,设置的上限为20vec
,在MATLAB命令提示符下输入此代码。
dpigenvarSizeVector金宝appSupportarg游戏{编码器。Typeof (1,[1 20],[0 1]),1,1}配置configObj
使用
正
在生成的SystemVerilog中指定端口大小为可变长且不限界。要从MATLAB测试台函数生成SystemVerilog测试台,请使用
-testbench
论点。
dpigenvarSizeVector金宝appSupport-testbenchvarSizeVector金宝appSupport_tb...arg游戏{编码器。Typeof (1,[1 inf],[0 1]),1,1}配置configObj
生成的接口
因为vec
在本例中,在代码生成期间指定为可变大小的向量,生成的SystemVerilog包括可变大小的输入vec
和输出y
.输出的数据类型y
派生自输入数据类型。这些可变大小的端口被声明为SystemVerilog开放数组([])。类的生成接口varSizeVector金宝appSupport
函数。
模块varSizeVector金宝appSupport_dpi (输入位clk、输入位clk_enable、输入位重置、输入真正的vec[]、输入真正的amp、输入真正的频率、输出shortinty[]);
在ModelSim中进行模拟
验证ModelSim®位于系统路径上。导航到指定的目录codegen \ dll \ varSizeVe金宝appctorSupport \ dpi_tb
.要在ModelSim中运行测试台并验证生成的组件,请在MATLAB命令提示符中输入以下命令。
vsim < run_tb_mq.do .
限制
此特性不支持:金宝app
可变大小的矩阵(如果需要,将矩阵转换为可变大小的向量)
用可变大小的字段构造数据类型
结构的可变大小数组
跨平台DPI组件生成
另请参阅
coder.config
(MATLAB编码器)|coder.typeof
(MATLAB编码器)|dpigen