主要内容

用基于AXI的RTL DUT替换行为DUT在UVM测试台中

此示例显示了如何从简单的行为DUT接口移动到使用AXI Lite和AXI流总线协议的RTL DUT接口。一些UVM组件必须更改,例如驱动程序和监视器,但可以在不修改的情况下重新使用原始测试台结构和序列和记分牌组件。

介绍

看这个例子从Simulink生成参数化UVM测试台万博1manbetx用于描述设计和背景上产生UVM测试台的背景。要为此示例执行默认的测试台:

%生成UVM测试台设计=“prm_uvmtb / PulseDetector”序列='prm_uvmtb / genpulse'记分牌='prm_uvmtb / checkdetection'UVMBuild(设计,序列,记分牌)

Simulink中的D万博1manbetxUT代表了脉冲检测器的功能行为,不使用任何硬件协议接口,这是HDL IP核的典型特征。UVM测试台使用Simulink设计代替实际的HDL实现万博1manbetx。验证工作流的下一步是将使用基于axis协议的实际HDL实现集成到同一个生成的UVM测试台中。

要使用RTL DUT,必须替换UVM测试台的部分,如蓝色部分所示:

映射端口到AXI接口

对于这个rtl dut,多项式系数端口映射到处理器接口,AXI4-Lite,data_in端口映射到AXI4流从接口,以及data_out.端口映射到一个AXI4-Stream主接口,如下所示。

您可以手动编写此RTL或使用HDL编码器的IP核心生成工作流以创建它。该模型具有算法,可以使用HDL编码器产品生成HDL IP核心。

模拟Simulink中的HDL变量万博1manbetx

要使用此变体进行模拟,请执行:

%模拟RTL可生成算法变量set_param(“prm_uvmtb / PulseDetector”'labelmodeaconciveChoice''hdl') set_param (“prm_uvmtb / CheckDetection / ExpectsDelay”'labelmodeaconciveChoice'帧的延迟) sim卡('prm_uvmtb'

[FrameNum= 0]在Ref或Impl中未发现峰值。[FrameNum= 1] Peak location=2163.000000, magu -squared=0.280 using global max [FrameNum= 1] Peak detected from impl=2170 error(abs)=7 [FrameNum= 1] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.017 [FrameNum= 2] Peak location=2163.000000,Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 2] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.190 [FrameNum= 3]Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 3] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.183 [FrameNum= 4] Peak location=2163.000000,[FrameNum= 4] Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 4] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.043 [FrameNum= 5] Peak location=2163.000000,[FrameNum= 5] Peak magu -squared from impl=0.255, error(abs)=0.000 error(pct)=0.031 [FrameNum= 6] Peak location=2163.000000,Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 6] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.187 [FrameNum= 7] Peak location=2163.000000,Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 7] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.019 [FrameNum= 8] Peak location=2163.000000,[FrameNum= 8] Peak magu -squared from impl=2170 error(abs)=7 [FrameNum= 8] Peak location=2163.000000, error(abs)=0.000 error(pct)=0.032 [FrameNum= 9] Peak location=2163.000000,[FrameNum= 9] Peak magu -squared from impl=0.239, error(abs)=0.001 error(pct)=0.241 [FrameNum= 10] Peak location=2163.000000, mag-squared=0.225 using global max [FrameNum= 10] Peak detected from impl=2170 error(abs)=7 [FrameNum= 10] Peak mag-squared from impl=0.225, error(abs)=0.000 error(pct)=0.146

生成高密度脂蛋白

如果您有HDL编码器,则可以设置工具路径并为此变体生成RTL。例如,要创建Xilinx Vivado兼容IP,请插入工具路径并执行以下操作:

%生成基于AXI的RTL HDL IP(需要HDL编码器)hdl setuptoolpath('toolname'“Xilinx Vivado”'工具路径''/tools/vivado/2018.3/bin/vivado')prm_uvmtb_hdlworkflow.

这将使生成的HDL IP文件放入HDL_PRJ / HDLSRC / PRM_UVMTB中。但是,RTL实现已包含在覆盖override_AXIDUT / AXIIVESOURCE中的此演示中,因此不需要HDL编码器许可证。

覆盖必要的UVM组件

用于替换原始DUT的UVM文件位于overrides_AXIDUT中。不需要修改从原始文件生成的任何文件UVMBuild.调用。

模拟UVM测试台

使用新的RTL DUT执行测试台,以验证UVM执行与Simulink执行的匹配。万博1manbetx因为序列是用信噪比输入端口参数化的,在UVM中它的默认值将是0.0。为了正确地比较模拟运行,我们需要将其默认值更改为2.0(它有一个位值0b10_000000),以匹配Simulink;万博1manbetx这可以通过一个plusarg来完成,我们通过一个环境变量传递给脚本。

我们有许多新的RTL文件来编译,我们必须覆盖顶层设计单元。我们通过环境变量将这些更新传递给脚本。

%清除影响UVM模拟的环境变量setenv.EXTRA_UVM_SIM_ARGS;setenv.extra_uvm_comp_args.;setenv.UVM_TOP_MODULE%使用AXI RTL DUT模拟UVM测试台cdprm_uvmtb_uvmbuild / uvm_testbench / topsetenv.extra_uvm_comp_args.'-f ../../../'overrides_axidut/extra_comp_args.f'setenv.EXTRA_UVM_SIM_ARGS'+ snr_default_inp_val = 10000000 + uvm_testname = mw_pulsedetector_axirtl_test'setenv.UVM_TOP_MODULEmw_pulsedetector_axirtl_top.!vsim - run_tb_mq。do % ModelSim/QuestaSim (gui)!Vsim -c -do run_tb_mq。做% ModelSim/QuestaSim(控制台)!./run_tb_incisive.sh%incisive(控制台)!./run_tb_xcelium.sh%xcelium(控制台)!./run_tb_vcs.sh % VCS (console)cd. . / . . / . .

仿真日志和波形片段如下所示。注意日志显示了与之前相同的结果,检测到5个脉冲。然而,也注意到波形显示不同的时间行使设计。而不是一个稳定的始终有效的数据流,对于每一帧5000个信号样本,64个系数首先通过处理器接口编程,然后5000个样本流。

结论和下一步

此示例显示了如何使用Simulink中开发的设计和测试替补来生成完全可执行的UVM测试台。万博1manbetx这UVMBuild.命令自动化关键组件的生成,编译和集成到UVM框架中。

HDL验证工程师可以从Simulink确认总体覆盖范围并使用自己的本机UVM序列库增强覆盖范围。万博1manbetx

它们还可以通过Simulink替代行为设计,RTL设计以AXI4等硬件协议包装,没有更改原始序列发生万博1manbetx器和响应检查。