主要内容

在SystemVerilog DPI组件中使用可变大小的矢量

本示例展示了如何配置、生成和使用具有可变长度输入或输出的SystemVerilog DPI (SVDPI)组件。

设计任务

当您从包含变量大小的矢量输入或输出的MATLAB®函数生成SVDPI时,结果是具有变量大小的输入或输出的SystemVerilog模块。按照以下示例在SystemVerilog环境中配置、生成和使用该组件。

MATLAB函数

本例使用了该函数varSizeVector金宝appSupport,一个输入大小的窦函数vec是可变的。函数的输出来自于输入,因此输出大小也是可变的。

Testbench

使用提供的varSizeVector金宝appSupport_tb试验台用固定大小的信号刺激功能。然后,生成一个SystemVerilog测试平台,对生成的SystemVerilog模块进行测试。您可以稍后更改生成的SystemVerilog测试平台的端口类型(或编写一个新的测试平台),而不需要从varSizeVector金宝appSupport函数。

配置生成选项

要指定受支持的工具链,请使金宝app用coder.config(MATLAB编码器)配置对象。将build_type设置为“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组件生成

另请参阅

(MATLAB编码器)|(MATLAB编码器)|

相关的话题