这个示例向您展示了如何为用MATLAB编写的可编程方波发生器生成SystemVerilog DPI组件,并将其导出到HDL模拟器。
出于演示目的,本示例在64位Windows 7中使用Modelsim 10.3c。但是,同样的过程可以很容易地复制到其他系统和模拟器中。
下载188bet金宝搏本例所需的产品:
MATLABCoder®
模拟器:Mentor Graphics®ModelSim®/QuestaSim®或Cadence®Incisive
支持的C编译器之一:M金宝appicrosoft®Visual c++,或GNU GCC
本例中使用的MATLAB代码演示了一个简单的可编程方波发生器。这个例子还提供了一个MATLAB测试平台来练习设计。
下图展示了在这个例子中生成的DPI组件:
“On_time”和“Off_time”控制输出信号占空比。
例如,如果On_time=1和Off_time=1,所生成的方波将有50%的占空比。
要设置设计示例文件,请在MATLAB命令提示符下面的代码。
mkdir (“svdpi_ProgSWGen”);cd (“svdpi_ProgSWGen”);拷贝文件(fullfile (matlabroot,“工具箱”,‘hdlverifier’,‘hdlverifier_examples’,‘svdpi_ProgSWGenerator’,‘*’), pwd);
这些命令创建一个临时文件夹“svdpi_ProgSWGenerator”,并复制设计文件“ProgSWGenerator”。m'和相应的testbench 'ProgSWGenerator_tb。m'到这个文件夹。
为了确保没有运行时错误,并且设计满足需求,在代码生成之前使用提供的testbench模拟设计。在MATLAB中输入以下命令:
ProgSWGenerator_tb
它应绘制如下图所示:
请注意,该图显示,被编程的行为如下输出信号:
时钟周期<100:上= 1,关= 1
250:100 <时钟周期< = 2,= 1
250 <时钟周期:= 1 = 2
使用DPIGEN生成DPI组件。
在MATLAB中执行DPIGEN命令如下:
dpigen -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
将生成以下的目录结构:
dpi_tb:所有testbench相关文件所在的文件夹。
ProgSWGenerator_dpi。sv:生成DPI组件。
ProgSWGenerator_dpi_pkg。生成SystemVerilog包。
libProgSWGenerator_dpi。包含所有导入函数定义的库。
注意:DPIGEN将自动尝试编译库。为了只生成文件而不进行编译,您应该使用-c选项。例如:
dpigen -c -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
对于的ModelSim / QuestaSim,执行以下步骤:
开始的ModelSim / QuestaSim在GUI模式。
在HDL模拟器中,在代码生成目录下将当前目录更改为“dpi_tb”。
输入以下命令启动模拟
做run_tb_mq.do
例如:
生成如下波形:
请注意,输出波(底部的那个)的行为与MATLAB测试平台中绘制的信号完全相同。
对于Incisive和VCS模拟器:
启动终端外壳
将代码生成目录下的当前目录更改为“dpi_tb”
对于精辟在你的shell中输入以下命令。
sh run_tb_incisive.sh
对于VCS,在您的shell中输入以下命令。
sh run_tb_vcs.sh
当模拟完成时,您应该会看到以下文本打印在您的控制台:
* * * * * * * * * * * * * *测试完成(通过)* * * * * * * * * * * * * *
这结束了入门基于MATLAB的SystemVerilog DPI组件生成的例子。