主要内容

改变参数的记分牌UVM试验台

这个例子展示了如何控制响应的参数检查器在UVM从模型生成的试验台。万博1manbetx这种参数化可以帮助设计验证工程师重用记分板在不同测试场景。万博1manbetx模型参数检查器将导致一个配置对象,其值可以设置在一个测试类派生(随机)或直接通过一个命令行参数。

介绍

看这个例子从模型生成参数化UVM试验台万博1manbetx对设计和背景的描述生成UVM试验台。生成的默认试验台这个例子中,执行:

%生成UVM试验台设计=“prm_uvmtb / PulseDetector”序列=“prm_uvmtb / GenPulse”记分板=“prm_uvmtb / CheckDetection”uvmbuild(设计、序列、记分板)

记分板的参数化

在模型中响应检查由一个错误阈值参数化变量中使用一个断言检查。它被指定为一个参数使用Simulink.Parameter SystemVerilog保留,万博1manbetxpErrorThreshold。在这种规范,给出默认值的1.95%,这反映了错误的宽容黄金参考和实际DUT的区别。(在这种testbench,这种差异是由于双精度与一个固定的点检测的实现逻辑。)

UVM代码生成的参数是放置在一个配置对象,mw_PulseDetector_scoreboard_cfg_obj,

看到mw_PulseDetector_scoreboard_cfg_obj.sv

在测试的build_phase被实例化,mw_PulseDetector_test:

看到mw_PulseDetector_test.sv

并通过uvm_config_db在记分板,mw_PulseDetector_scoreboard在其start_of_simulation_phase:

看到mw_PulseDetector_scoreboard.sv

更新错误使用+参数阈值

测试计划最初要求1.95%的公差。如果以后,设计规范收紧,以反映更安全关键需求的0.50%,这可以使用命令行来完成的。在我们的支持脚万博1manbetx本中,我们使用一个环境变量影响SystemVerilog命令行+论点。

%明显影响UVM仿真环境变量setenvEXTRA_UVM_SIM_ARGSsetenvEXTRA_UVM_COMP_ARGSsetenvUVM_TOP_MODULE
%模拟UVM试验台使用plusarg覆盖cdprm_uvmtb_uvmbuild uvm_testbench /setenvEXTRA_UVM_SIM_ARGS“+ SNR_default_inp_val = 01000000 + RTWStructParam_pErrorThreshold = 0.50”!vsim - run_tb_mq。% ModelSim / QuestaSim (gui)!vsim - c - run_tb_mq。% ModelSim / QuestaSim(控制台)!/ run_tb_incisive。sh %门齿(控制台)!/ run_tb_xcelium。sh % Xcelium(控制台)!/ run_tb_vcs。sh % VCS(控制台)cd. . / . . / . .

观察到一个信噪比为1.0的设计有时违背了0.50%的误差阈值。

随机误差阈值测试中使用默认配置对象

你可以直接从测试生成和设置值由于计分板配置对象是一个成员。我们随机阈值在[0.050,0.500]%范围。注意,阈值的类型真正的因此不能直接随机。

看到mw_PulseDetector_SCRPRM_param_overrides.sv

运行UVM模拟使用这些新类,我们可以用额外的参数使用原始的脚本通过环境变量。

%模拟UVM试验台使用随机配置对象设置cdprm_uvmtb_uvmbuild uvm_testbench /setenvEXTRA_UVM_COMP_ARGS“- f . . / . . / . . / overrides_SCRPRM / extra_comp_args.f 'setenvEXTRA_UVM_SIM_ARGS' + SNR_default_inp_val = 01000000 + UVM_TESTNAME = mw_PulseDetector_test_SCRPRM '!vsim - run_tb_mq。% ModelSim / QuestaSim (gui)!vsim - c - run_tb_mq。% ModelSim / QuestaSim(控制台)!/ run_tb_incisive。sh %门齿(控制台)!/ run_tb_xcelium。sh % Xcelium(控制台)!/ run_tb_vcs。sh % VCS(控制台)cd. . / . . / . .

观察到在这个运行,0.150%的阈值选择,最终几帧违反这个阈值。

随机误差阈值使用派生的配置对象

您还可以创建更复杂的随机化的配置设置,创建一个派生的记分板配置对象。在这个例子中,测试计划要求的阈值下降不同的有趣的范围,反映了不同的操作环境的探测器。

看到mw_PulseDetector_SCRPRM_param_overrides.sv

为了实现这一目标,导出配置对象下额外的行为:

  • 添加一个成员声明为randc“threshold_bucket”

  • 使用threshold_bucket成员暗示阈值范围

  • 打印在模拟检验的随机值

创建一个新的测试告诉UVM工厂使用新的配置对象,随机在build_phase其设置。

运行UVM模拟使用这些新类,我们可以用额外的参数使用原始的脚本通过环境变量。

%模拟UVM试验台使用随机配置对象的cdprm_uvmtb_uvmbuild uvm_testbench /setenvEXTRA_UVM_COMP_ARGS“- f . . / . . / . . / overrides_SCRPRM / extra_comp_args.f 'setenvEXTRA_UVM_SIM_ARGS' + SNR_default_inp_val = 01000000 + UVM_TESTNAME = mw_PulseDetector_test_SCRPRM2 '!vsim - run_tb_mq。% ModelSim / QuestaSim (gui)!vsim - c - run_tb_mq。% ModelSim / QuestaSim(控制台)!/ run_tb_incisive。sh %门齿(控制台)!/ run_tb_xcelium。sh % Xcelium(控制台)!/ run_tb_vcs。sh % VCS(控制台)cd. . / . . / . .

观察到这种运行选择阈值为1.01%,所有框架在这个阈值。

结论和下一步

在全UVM环境中,只要介绍了随机化通常是必要的包括覆盖,确保环境的不同部分都知道生成随机值。在这些例子中随机值是简单地打印出来。添加覆盖生成错误阈值和分析实际信号错误的粗许多模拟运行是留给读者的一个练习。