主要内容

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

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

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

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

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

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

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

一个更快生成的测试平台替代方案是HDL Verifier™SystemVerilog DPI测试平台。SystemVerilog DPI测试台不需要Simulink仿真,因此对于大数据集,它生成测试台的时间金宝app比HDL测试台短。

HDL Verifier™SystemVerilog DPI测试台与Simulink Coder™集成,可以在Syst金宝appemVerilog组件中使用直接编程接口(DPI)导出生成的C代码。在DPI-C组件中,刺激被生成并应用于C子系统,也应用于为Simulink系统生成的HDL代码。金宝app测试台将HDL仿真的输出与DPI-C组件的输出进行比较,验证HDL的设计。

多相滤波器组

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

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

modelname =“hdlcoder_DPIC_testbench”;open_system (modelname);

建立模型

InitFcn回调(模型属性>回调> InitFcn)设置模型。在这个例子中,512点FFT与四个抽头滤波器为每个频带被使用。dsp。信道化对象用于生成系数。

该算法需要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测试台,然后捕获测试台数据。金宝app

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

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

这个命令在不运行Simulink仿真的情况下生成SystemVerilog测试台。金宝app代码不是模拟,而是在SystemVerilog组件中导出Simulink系统作为生成的C代码金宝app。测试台将输出数据与HDL设计的输出数据进行比较,验证输出数据的正确性。makehdltb函数还为编译和模拟生成特定于模拟器的脚本。

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

或者,您可以在配置参数中的“HDL Code Generation > test bench”窗格中设置SystemVerilog DPI测试台选项。

生成的SystemVerilog DPI测试工作台工件

当你请求SystemVerilog DPI测试台时,编码器会生成以下工件:

一个)。PolyPhaseFilterBank_dpi_tb。sv——这是SystemVerilog测试平台,用于验证HDL代码。

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

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

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

要测试HDL模拟器来生成HDL代码覆盖率报告和数据库,可以采用以下方法:

一个)。在“HDL Code Generation > Test Bench”窗格中,选择标签为“HDL Code coverage”的复选框。

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

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

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

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

模型的模拟时间在预加载回调中设置(模型属性> callback > 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岁

日志的一代时间这两个试验台类型对样本的数量,显示在高密度脂蛋白试验台需要更多的世代时间的增加样品的数量,生成时间SystemVerilog DPI试验台保持不变无论样本的数量。

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

结论

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