主要内容

从Simulink生成参数化UVM测试台万博1manbetx

这个例子展示了如何在Simulink®中开发一个设计和测试平台,并使用Simulink生成一个通用验证方法(UVM)环境的等效仿真万博1manbetx紫外线照射。相关示例显示如何扩展此测试台,使用特定于协议的驱动程序,约束随机序列和参数化记分牌来完善验证。

介绍

此示例通过HDL实现的自上而下的设计开发过程来实现。在这样的工作流程中,您可以在Simulink中设计一种行为算法,并使用围绕刺激生成和结果检查的围绕块测试它。万博1manbetx一旦模拟确认设计符合其要求,您可以向下游HDL实施团队提供任何抵押品。您需要重新验证HDL实现满足Simulink中模拟的要求以及设计中的任何其他唯一方面,例如在Simulink中未建模的协议接口。万博1manbetx

通常,切换过程可能是繁琐的,并且许多错误的来源。HDL实现和HDL设计验证(DV)工程师必须:

  • 将书面规范转换为HDL和测试环境。

  • 了解Simulink仿真环境的运行时行为,例如如何创建,处理和检查刺激。万博1manbetx

  • 将运行时行为转换为SystemVerilog实现。

  • 将刺激,设计和响应进行集成到Runnable SystemVerilog中,以确认翻译行为的行为与原始Simulink仿真相同。万博1manbetx

  • 将这些主要的SystemVerilog组件集成到UVM上下文中,以允许使用dv编写的验证扩展Simulink测试。万博1manbetx这个扩展的测试可能包括随机测试、SystemVerilog断言、功能覆盖和代码覆盖。

使用HDL验证器™UVM生成功能,这个移交过程是自动化的。DV工程师得到一个经过验证的UVM测试环境,该环境与在Simulink中执行的测试相匹配,并且可以轻松地更新该环境以满足他们的下游验证需求。万博1manbetx

Simulink中的设计和测试万博1manbetx

编写你的算法并添加一个测试台。该模型由典型的试验台子系统组成,如刺激产生、被测设计(DUT)和响应检查。

在这种设计中,源子系统在5000个样本噪声帧中嵌入在随机位置的64个信息的随机脉冲。它还产生一组64最佳匹配的滤波器系数,用于检测脉冲。输入被馈送到设计和响应检查器。响应检查器验证脉冲在嘈杂波形中检测到右位置。通过控制台输出确认了正确的操作。如果检测到的信号的预期功率不在某些限制范围内,则触发断言。

模拟模型提供了在五个产生的脉冲中的确认,检测到五个。三个镶板图示出了TX信号(原始脉冲),Rx信号(嵌入噪声中的脉冲),以及所示检测到峰值的参考实现的滤波输出。输出信号被一帧延迟。

[FrameNum= 0] Peak location=2163.000000, magu -squared=0.280 using global max [FrameNum= 0] Peak detected from impl=2163 error(abs)=0 [FrameNum= 0] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.017 [FrameNum= 1] Peak location=2163.000000,Peak mags -squared from impl=0.199, error(abs)=0.000 error(pct)=0.190 [FrameNum= 2] Peak location=2163.000000,Peak magu -squared from impl=2163 error(abs)=0 [FrameNum= 2] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.183 [FrameNum= 3]max [FrameNum= 3] Peak detected from impl=2163 error(abs)=0 [FrameNum= 3] Peak magu -squared from impl=0.200, error(abs)=0.000 error(pct)=0.043 [FrameNum= 4] Peak location=2163.000000,[FrameNum= 4] Peak magu -squared from impl=0.255, error(abs)=0.000 error(pct)=0.031 [FrameNum= 5] Peak location=2163.000000,Peak magu -squared from impl=0.241, error(abs)=0.000 error(pct)=0.187 [FrameNum= 6] Peak location=2163.000000,Peak magu -squared from impl=0.241, error(abs)=0.000 error(pct)=0.019 [FrameNum= 7] Peak location=2163.000000,Peak magu -squared from impl=0.225 error(abs)=0 [FrameNum= 7] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.032 [FrameNum= 8] Peak location=2163.000000,Peak magu -squared from impl=0.239, error(abs)=0.000 error(pct)=0.037 [FrameNum= 9] Peak location=2163.000000,Peak magu -squared from impl=0.225 error(abs)=0 [FrameNum= 9] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.146 [FrameNum= 10] Peak location=2163.000000, mag-squared=0.207 using global max [FrameNum= 10] Peak detected from impl=2163 error(abs)=0 [FrameNum= 10] Peak mag-squared from impl=0.207, error(abs)=0.000 error(pct)=0.134

生成一个可执行的UVM测试台

使用紫外线照射功能将您的设计导出到UVM环境。UVM测试台为HDL验证过程提供了结构,并允许所有Simulink测试台组件和测试用例被实现验证团队重用。标准组件定义根据其在模拟中的角色将环境的各个部分分开n、 对于此示例:万博1manbetx

  • 脉冲检波器映射到DUT SystemVerilog模块

  • Genpulse.子系统被映射到顺序项创建序列符UVM组件

  • 校验校验子系统映射到Scoreboard UVM组件。

生成的UVM测试台如下所示:

%生成UVM测试台设计='prm_uvmtb / pulsedetector'序列=“prm_uvmtb / GenPulse”记分牌=“prm_uvmtb/检查检测”uvmbuild(设计、序列、记分板)

UVM测试平台的每一个突出显示的部分都是通过包装来自Simulink子系统生成的c代码并使用DPI调用其入口点来实现的。万博1manbetx下面的图像显示了PulseDetector子系统的两个函数声明。

SystemVerilog/UVM代码决定DPI调用的时间。例如,在PulseDetector SystemVerilog模块中:

  • “初始化”DPI调用由“初始”代码块触发。

  • “终止”DPI调用由“最终”代码块触发。

  • “重置”DPI调用由活动复位信号触发。

  • “输出”和“更新”DPI调用被升高的时钟边缘触发,其中复位未激活,时钟启用处于活动状态。

运行UVM测试台

紫外线照射该过程还生成一个脚本来运行UVM测试的模拟。为以下模拟器生成脚本:

  • MentorGraphics®SexchingIm®和Questa®:run_tb_mq.do

  • Cadence®Incisive™:run_tb_incisive.sh

  • Cadence®Xcelium™:run_tb_xcelium.sh

  • Synopsys®VCS®:运行\u tb\u VCS.sh

显示了为ModelSim生成的脚本。

执行生成的脚本以验证UVM执行与Simulink执行匹配。万博1manbetx由于序列用SNR输入端口参数化,因此其默认值将在UVM中为0.0。为了正确比较模拟运行,我们需要将其默认值更改为2.0(具有0b10_000000的比特值),以匹配simulink;万博1manbetx这可以通过PlueRG完成,我们通过环境变量传递给脚本。

影响UVM模拟的%清除环境变量'setenvextra_uvm_sim_args.setenvextra_uvm_comp_args.setenvUVM_顶部_模块
%使用2.0的信噪比模拟UVM测试台光盘UVM_BUILD / PRM_UVMTB_UVM_TESTBENCH / TOPsetenvextra_uvm_sim_args.+信噪比默认值输入值=10000000!vsim -do run_tb_mq.do%modelsim / questasim(gui)!vsim-c-do run_tb_mq.do%ModelSim/QuestaSim(控制台)!./run_tb_incisive.sh % Incisive (console)!./run_tb_xcelium.sh % Xcelium (console)!./run_tb_vcs.sh%vcs(控制台)光盘../../..

模拟日志显示相同的诊断消息:

波形显示DUT接口信号的定时。光标放置在帧边界处,显示匹配滤波器系数的瞬时更新。