主要内容

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

此示例演示如何使用SystemVerilog DPI测试台验证需要大数据集的HDL代码。

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

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

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

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

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

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

HDL验证器™ SystemVerilog DPI测试台与Simulink编码器集成™ 将Simulink系统导出为带万博1manbetx有直接编程接口(DPI)的SystemVerilog组件内生成的C代码。在DPI-C组件内,刺激生成并应用于C子系统,也应用于生成的Simulink系统HDL代码。测试台将HDL模拟的输出与DPI-C组件的输出进行比较,以验证HDL设计。

多相滤波器组

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

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

型号名称=“hdlcoder\u DPIC\u测试台”; 开放式系统(型号名称);

建立模型

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

该算法需要512个滤波器(每个频带一个滤波器)。对于16个样本的向量输入,过滤器实现共享16个过滤器,32次。输入数据包括两个正弦波,200KHz和250kHz。

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

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

workingdir=tempname;

检查多相滤波器组子系统的HDL代码生成兼容性:

checkhdl (“hdlcoder\u DPIC\u测试台/多相滤波器组”,“TargetDirectory”,workingdir);

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

makehdl(“hdlcoder\u DPIC\u测试台/多相滤波器组”,“TargetDirectory”,workingdir);

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

makehdltb (“hdlcoder\u DPIC\u测试台/多相滤波器组”,“TargetDirectory”,workingdir);

这将通过在Simulink中模拟模型,然后捕获测试台数据来生成HDL测试台。万博1manbetx

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

HDL模拟器=“ModelSim”;%支万博1manbetx持的模拟器选项='ModelSim','Incisive','VCS','Vivado'
makehdltb (“hdlcoder\u DPIC\u测试台/多相滤波器组”,“TargetDirectory”,workingdir,“GenerateSVDPITestBench”HDLSimulator,“GenerateHDLTestBench”,“关闭”);

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

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

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

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

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

a、 )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代码覆盖率报告和数据库,请执行以下操作之一:

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

b、 )调用“makehdltb”时,将“hdlcodecorerage”设置为“on”。例如:

makehdltb (“hdlcoder\u DPIC\u测试台/多相滤波器组”,“TargetDirectory”,workingdir,“GenerateSVDPITestBench”HDLSimulator,“GenerateHDLTestBench”,“关闭”,“HDLCO去平均值”,“开”);

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

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

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

simTime=1000;

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

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

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

您可以通过更改“simTime”变量来增加模拟时间。例如,要为2e+12个样本生成HDL测试台,请设置:

simTime = 1000000;

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

列= {“样本数量”;“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,“变化无常”、列);disp (CompareTestBenchTimes);
样本数数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量数量472E+1012472E+1159472E+125047472E+13494472E+1452200472E+155.0551e+0547

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

日志(numSamples、HDLTBtime、,“这”,numSamples,DPICTBtime,“r-o”); xlim([2e09 2e15]);传奇(“HDL测试台”,“SystemVerilog DPI测试台”,“位置”,“西北”); xlabel(“样本数量”); 伊拉贝尔('生成时间(以秒为单位)'); 关闭_系统(modelname,0);

结论

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