从模型生成功能覆盖在SystemVerilog测试金宝app验证
调用
这个案例展示了如何测试一个投影仪使用模型模拟控制系统,以及如何生成一个SystemVerilog DPI组件控制器的一些高水平测试序列块中指定的需求。这将允许需求验证模型用于模拟被重用的HDL模拟器以最小的努力。
该模型从例子投影仪使用验证控制器测试和实时测试(金宝app仿真软件测试)附带仿真软件测试™和简化为金宝app只显示需求场景4。
了解更多关于验证语句,看看评估模型模拟使用验证语句(金宝app仿真软件测试)。
其他先决条件
除了规定的产品要求,本例中需要:
一个金宝app受支持的HDL模拟器。看到UVM和DPI组件生成的要求。
一个金宝appC编译器的支持。看到选择和配置C或c++编译器(金宝app仿真软件编码器)。
概述
测试验证控制器对其需求使用测试序列,运动顶级控制器模型。控制器使用一个按钮输入和温度传感器的输入,并输出信号控制风扇,风扇转速,投射灯。
目标是生成一个SystemVerilog DPI组件捕获高水平要求4号的控制器。更多信息参考word文档的需求sltestProjectorCtrlReqs.docx
在上面的示例中提到。
要求4时试图打开或关闭投影仪投影温度(Tproj)很高。场景测试序列块有以下步骤:
投影仪温度设置为50摄氏度。
试着打开。
系统不应该打开。
将温度设置为50摄氏度。
试着关掉。
系统应该关闭。
下图显示了上面的要求,如何的试验台验证
用于检查投影仪打开或关闭根据场景。
设置代码生成模型
模型和试验台是预先配置的SystemVerilog DPI系统目标文件(systemverilog_dpi_grt.tlc)。打开测试工具Req_scenario_4
通过执行:
测试文件=“svdpi_sltestProjectorCtrlTests.mldatx”;testHarness =“Req_scenario_4”;模型=“svdpi_sltestProjectorController”;open_system(模型)
testHarness sltest.harness.open(模型)
生成SystemVerilog DPI组件
在Req_scenario_4试验台,右键单击Req_4子系统块包含测试序列块和选择。C / c++代码- >构建这个子系统。
点击构建在出现的对话框中。
构建生成C代码Req_4子系统,SystemVerilog DPI包装和包装文件名为“Req_4_build / Req_4_dpi。sv”和“Req_4_build / Req_4_dpi_pkg.sv”。
注意,一些验证警告将被触发,这将在稍后解释。
或者您可以生成组件通过执行:
slbuild (“Req_scenario_4 / Req_4”);
运行生成的Testbench HDL模拟器
对于这个示例ModelsSim / QuestaSim模拟器将被使用。为详细说明如何运行testbench参考开始使用SystemVerilog DPI组件的一代。
cdReq_4_build / dpi_tb!vsim - c - run_tb_mq。# ModelSim / QuestaSim在控制台模式运行吗cd. . / . .
检查HDL仿真输出,注意以下几点:
信息消息显示功能覆盖率将收集2验证调用的组件
有一个错误标记关于控制器的故障关闭当温度高于上限。
测试被标记为通过,因为SystemVerilog仿真结果与仿真软件仿真结果。金宝app
功能覆盖显示覆盖率达到第一验证调用而不是取得了第二。
整体功能覆盖目标不满足。
仿真软件的错误与仿真结果是一致的(下图)。金宝app打开测试经理显示控制器on_off按钮被按下时不能关闭,当温度高于上限。打开测试经理你可以执行:
sltest.testmanager.load(测试文件);sltest.testmanager.view;
解决故障需要修改时断时续的检查子系统的主要模型。其他要求,verify_sc4_on
如图所示,是满意,在仿真软件测试和SystemVerilog报道结果。金宝app
追踪SystemVerilog误差模型金宝app
如果你想跟踪验证语句生成错误回模型你需要找到仿真软件错误消息的标识符(SID)如下所示:金宝app
一旦你找到SID一步id的测试序列块可以使用一个函数来突出相应的块。执行以下命令:
金宝appSimulink.ID.hilite (“Req_scenario_4:32:60”);
这样可以突出相关块如下所示。
过滤特定的验证评估
过滤任何验证评估状态检查HDL模拟器,供应SID评估你想过滤的HDL plusargs参数模拟器。这样的滤波器将意味着没有错误和没有覆盖检查评估。例如你可以过滤错误verify_sc4_off
使通过提供论证“+ Req_scenario_4:32:60”高密度脂蛋白模拟器。你可以通过一个环境变量,所以你不必修改生成的脚本。
%明显影响SV仿真环境变量setenvEXTRA_SVDPI_COMP_ARGSsetenvEXTRA_SVDPI_SIM_ARGS
%筛选失败验证()setenvEXTRA_SVDPI_SIM_ARGS+ Req_scenario_4:32:60 = 1cdReq_4_build / dpi_tb!vsim - c - run_tb_mq。# ModelSim / QuestaSim在控制台模式运行吗cd. . / . .
请注意,现在的HDL模拟显示:
一个警告,一个验证评估被过滤
一条信息消息,报道将聚集其他评估
不再有任何错误。
测试被标记为通过,因为SystemVerilog仿真结果与仿真软件仿真结果。金宝app
功能覆盖显示了启用,覆盖率达到评估
整体功能覆盖的目标是满足。
增加的覆盖目标特定的验证评估
您还可以更改任何评估所需的功能覆盖目标通过提供一个积极的价值加上参数。默认的目标是看到至少1通过身份验证的电话。如果你想确保至少有2验证通过状态检查你会提供一个“2”+ arg的值。
%明显影响SV仿真环境变量setenvEXTRA_SVDPI_COMP_ARGSsetenvEXTRA_SVDPI_SIM_ARGS
%筛选失败| |验证和设立一个覆盖目标2的其他| |验证setenvEXTRA_SVDPI_SIM_ARGS“+ Req_scenario_4:32:60 = 1 + Req_scenario_4:32:39 = 2”cdReq_4_build / dpi_tb!vsim - c - run_tb_mq。# ModelSim / QuestaSim在控制台模式运行吗cd. . / . .
注意,现在HDL仿真表明,未经验证
不是会议的覆盖目标至少2传递,因此整个测试也是如此。
日志,所有验证失败,和未经检验的状态评估
您可以添加日志输出所有过滤所有状态检查验证
通过添加+ VERBOSE_VERIFY +参数调用。这可能是有用的,如果你需要检查的时机和分布测试,通过和失败验证状态值。
%明显影响SV仿真环境变量setenvEXTRA_SVDPI_COMP_ARGSsetenvEXTRA_SVDPI_SIM_ARGS
%每个状态检查日志。setenvEXTRA_SVDPI_SIM_ARGS+ VERBOSE_VERIFYcdReq_4_build / dpi_tb!vsim - c - run_tb_mq。# ModelSim / QuestaSim在控制台模式运行吗cd. . / . .
注意,高密度脂蛋白模拟现在显示每个测试和SystemVerilog PASS状态检查价值信息
SystemVerilog错误消息和每个失败状态。
结论
SystemVerilog DPI组件生成和测试序列块从仿真软件测试™可以用来验证逻辑与仿真软件迁移到高密度脂蛋白模拟器以最小的努力。金宝app