主要内容

基于MATLAB的SystemVerilog DPI生成入门

这个例子向您展示了如何生成一个SystemVerilog DPI组件为可编程方波发生器编写在MATLAB®,并将其导出到一个HDL模拟器。

出于演示目的,本示例使用64位Windows®7中的Modelsim®10.3c。然而,同样的过程可以很容易地复制到其他系统和模拟器上。

需求和先决条件

s manbetx 845本示例所需产品:

  • MATLAB编码器™

  • 模拟器:Mentor Graphics®ModelSim®/QuestaSim®或Cadence®Incisive

  • 支持的C编译器之一:M万博1manbetxicrosoft®Visual c++,或GNU GCC

MATLAB设计

在这个例子中使用的MATLAB代码演示了一个简单的可编程方波发生器。本实例还提供了一个MATLAB测试平台来练习设计。

下图展示了在这个示例中生成的DPI组件:

  • 'On_time'和'Off_time'控制输出信号占空比。

例如,如果On_time=1和Off_time=1,产生的方波占空比将为50%。

仿真设计与提供的MATLAB测试平台

为了确保没有运行时错误,并且设计满足需求,在代码生成之前使用提供的测试台模拟设计。在MATLAB中输入以下命令:

ProgSWGenerator_tb

它应该绘制如下图:

请注意,图中显示的输出信号被编程为如下行为:

  • 时钟周期< 100:= 1 = 1

  • 250: 100 <时钟周期< = 2,= 1

  • 250 <时钟周期:= 1 = 2

使用DPIGEN命令生成DPI组件

使用DPIGEN生成DPI组件。

在MATLAB中执行DPIGEN命令如下:

dpigen-testbenchProgSWGenerator_tbProgSWGeneratorarg游戏{0}

生成如下目录结构:

dpi_tb:所有与测试台相关的文件所在的文件夹。

ProgSWGenerator_dpi。sv:生成DPI组件。

ProgSWGenerator_dpi_pkg。sv:生成的SystemVerilog包。

libProgSWGenerator_dpi.dll:包含所有导入函数定义的库。

注意:DPIGEN将自动尝试编译库。为了不编译就生成文件,你应该使用-c选项。例如:

dpigen- c-testbenchProgSWGenerator_tbProgSWGeneratorarg游戏{0}

在HDL模拟器中运行生成的测试台

对于ModelSim/QuestaSim,执行以下步骤:

  • 在GUI模式下启动ModelSim/QuestaSim。

  • 在HDL Simulator中,将当前目录更改为代码生成目录下的“dpi_tb”。

  • 输入以下命令启动模拟

run_tb_mq.do

例如:

生成如下波形:

请注意,输出波(底部的那个)的行为方式与在MATLAB测试台上绘制的信号完全相同。

对于Incisive和VCS模拟器:

  • 启动终端外壳

  • 将代码生成目录下的当前目录更改为“dpi_tb”

  • 对于Incisive,在shell中输入以下命令。

上海run_tb_incisive.sh
  • 对于VCS,在shell中输入以下命令。

上海run_tb_vcs.sh
  • 当模拟结束时,你应该看到在控制台中打印出以下文本:

************** 测试完成(通过 )**************

这结束了基于MATLAB的SystemVerilog DPI组件生成示例的入门。