主要内容

使用SystemVerilog DPI试验台验证HDL设计

这个例子展示了如何使用SystemVerilog DPI测试台架来验证需要大量数据集的HDL代码。

在某些应用中,需要模拟大量的样本来验证由HDL Coder™为您的算法生成的HDL代码。例如,这些应用需要大量的样本进行算法验证:

a)使用多相滤波器组计算雷达天文频率通道。

b)从通信系统中的维特比译码器获取误码率(BER)。

c)基于高分辨率视频的像素流视频处理算法。

生成一个HDL测试台架来验证这样的设计是耗时的,因为编码器必须在Simulink®中模拟模型来捕获测试台架数据。

一个更快的生成测试台架替代是HDL Verifier™SystemVerilog DPI测试台架。SystemVerilog DPI测试台架不需要Simulink模拟,因此对于大型数据集,它比HDL测试台架在更短的时间内生成测试台架。

HDL验证器SystemVerilog DPI测试台架与Simulink Coder™集成,以在SystemVerilog组件中生成的C代码导出Simulink系统,该组件具有直接编程接口(DPI)。在DPI-C组件中,刺激被生成并应用到C子系统中,同时也应用到为Simulink系统生成的HDL代码中。测试台架将HDL模拟的输出与DPI-C组件的输出进行比较,以验证HDL设计。

多相滤波器组

多相滤波器组是一种广泛用于减少FFT中由于泄漏和扇形损耗造成的误差的技术。与普通DFT相比,多相滤波器组通过显著抑制带外信号产生更平坦的响应。

该模型是一个多相滤波器组,由一个滤波器和一个FFT组成,FFT一次处理16个样本。有关多相滤波器组的更多信息,请参见用于FPGA的高吞吐量通道器

modelname =“hdlcoder_DPIC_testbench”;open_system (modelname);

建立模型

InitFcn回调(模型属性>回调> InitFcn)建立模型。在这个例子中,使用了512点FFT,每个波段使用四个抽头滤波器。dsp。Channelizer对象用于生成系数。

该算法需要512个滤波器(每个波段一个滤波器)。对于16个样本的向量输入,滤波器实现共享16个滤波器,32次。输入数据由两个正弦波组成,200KHz和250khz。

生成HDL代码、HDL测试台和SystemVerilog DPI测试台

为生成的文件使用临时目录:

workingdir = tempname;

检查PolyphaseFilterBank子系统的HDL代码生成兼容性:

checkhdl (“hdlcoder_DPIC_testbench / PolyPhaseFilterBank”“TargetDirectory”, workingdir);

运行以下命令生成HDL代码:

makehdl (“hdlcoder_DPIC_testbench / PolyPhaseFilterBank”“TargetDirectory”, workingdir);

运行以下命令生成测试台:

makehdltb (“hdlcoder_DPIC_testbench / PolyPhaseFilterBank”“TargetDirectory”, workingdir);

通过在Simulink中模拟模型,生成一个HDL测试台架,然后捕获测试台架数据。

运行如下命令生成SystemVerilog DPI测试台架:

HDLSimulator =“ModelSim”%支持的模拟器选项= 'ModelSim', 'Incisive', 'VCS', 'Vivado'
makehdltb (“hdlcoder_DPIC_testbench / PolyPhaseFilterBank”“TargetDirectory”workingdir,“GenerateSVDPITestBench”HDLSimulator,“GenerateHDLTestBench”“关闭”);

该命令在不运行Simulink模拟的情况下生成SystemVerilog测试台。该代码将Simulink系统导出为SystemVerilog组件中生成的C代码,而不是模拟。测试台架通过将输出数据与HDL设计的输出进行比较来验证输出数据。makehdltb函数还为编译和模拟生成特定于模拟器的脚本。

SystemVerilog DPI测试台可用于验证两种目标语言的HDL设计- VHDL®和Verilog®。

或者,您可以在配置参数中的“HDL代码生成>测试台架”窗格中设置SystemVerilog DPI测试台架选项。

生成SystemVerilog DPI测试工作台工件

当您请求一个SystemVerilog DPI测试台架时,编码器会生成以下构件:

一个)。PolyPhaseFilterBank_dpi_tb。sv -这是验证HDL代码的SystemVerilog测试台架。

b。)PolyPhaseFilterBank_dpi_tb。do -这是Mentor Graphics ModelSim®用来编译HDL代码和运行测试台模拟的宏文件。

基于所选的模拟器,编码器生成一个不同的文件用于编译和测试台模拟。例如,如果您选择'Incisive',编码器将生成'PolyPhaseFilterBank_dpi_tb.sh',用于在Cadence®Incisive®上编译和模拟。

(可选)生成HDL代码覆盖率报告和数据库

要使HDL模拟器生成HDL代码覆盖率报告和数据库,可以:

一个)。在“HDL代码生成>测试台台”窗格上,选中标记为“HDL代码覆盖率”的复选框。

b。)当你调用'makehdltb'时,将'HDLCodeCoverage'设置为'on'。例如:

makehdltb (“hdlcoder_DPIC_testbench / PolyPhaseFilterBank”“TargetDirectory”workingdir,“GenerateSVDPITestBench”HDLSimulator,“GenerateHDLTestBench”“关闭”“HDLCodeCoverage”“上”);

模拟测试台架后,在源目录中生成HDL代码覆盖率工件。

HDL测试台与SystemVerilog DPI测试台生成时间的比较

模型的模拟时间在预加载回调中设置(模型属性> Callbacks > PreLoadFcn)

simTime = 1000;

采样频率为2e+ 6hz,这意味着生成HDL测试台的模拟采集2e+9个样本。

对于某些应用,它需要更多的样本从多相滤波器获得正确的频率。增加所需的simTime也会增加生成HDL测试台架所需的时间。

这种应用程序的解决方案是使用SystemVerilog DPI测试台架。无论您的测试场景需要多少样例,测试工作台的生成时间都是相同的。

你可以通过改变'simTime'变量来增加模拟时间。例如生成一个针对2e+12个样本的HDL测试台架,设置:

simTime = 1000000;

下表显示了在增加样本数量(从2e+9到2e+15)时生成HDL试验台和SystemVerilog DPI试验台所需时间的比较(以秒为单位):

列= {“NumberOfSamples”“GenerationTimeHDLTestBench”“GenerationTimeSystemVerilogDPITestbench”};numSamples = [2 e9; 2 e10; 2 e11; 2 e12汽油;2 e13; 2 e14灯头;2 e15];HDLTBtime =(10、12、59;504;4994;52200;505506);DPICTBtime =[47, 47岁,47岁,47个;47,47岁,47);CompareTestBenchTimes =表(numSamples HDLTBtime DPICTBtime,“VariableNames”、列);disp (CompareTestBenchTimes);
NumberOfSamples GenerationTimeHDLTestBench GenerationTimeSystemVerilogDPITestbench  _______________ __________________________ _______________________________________ 47 2 e 2 e + 09年10 + 10 12 47 2 e + 11 59 47 504 47 2 e e + 12 + 13 4994 47 52200 47 2 e e + 14 + 15 5.0551 e + 05年47岁

这两种测试台架类型的生成时间相对于样本数量的对数图表明,随着样本数量的增加,HDL测试台架需要更多的生成时间,而SystemVerilog DPI测试台架的生成时间保持不变,而不考虑样本数量。

重对数(numSamples HDLTBtime,“这”numSamples DPICTBtime,“r-o”);xlim ([2 e09 e15]);传奇(“高密度脂蛋白试验台”“SystemVerilog DPI测试台”“位置”“西北”);包含(样品的数量);ylabel (“生成时间(秒)”);close_system (modelname 0);

结论

虽然HDL测试台架对于少量的样本是非常有效的,但如果您的测试场景需要大量的样本,HDL Verifier SystemVerilog DPI测试台架可以提供更快的测试台架生成。

Baidu
map