生成的Simulink参数UVM试验台万博1manbetx

这个示例展示了如何在Simulink中开发设计和测试工作台,并使用它为通用验证方法(UVM)环境生成等效的仿真万博1manbetxuvmbuild。相关例子显示如何扩展该测试台使用特定协议的驱动程序,约束的随机序列,并且参数记分牌来优化您的验证。

介绍

这个例子将引导您完成HDL实现的自顶向下的设计开发过程。在这样的工作流程,你设计在Simulink行为算法并利用周围块激励生成和结果检查测试。万博1manbetx一旦仿真确认设计满足其要求,则需要交付给下游HDL实现团队的任何担保。你需要重新验证HDL实现符合要求,在Simulink仿真以及如协议接口设计的任何其他独特的方面是没有在Simulink模型。万博1manbetx

通常的越区切换过程可以是乏味和许多错误的来源。该HDL实现和HDL设计验证(DV)工程师必须:

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

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

  • 转换运行时的行为来实现的SystemVerilog。

  • 整合的刺激,设计和响应检查到一个可运行的SystemVerilog,以确认该翻译行为的行为和原来一样Simulink仿真。万博1manbetx

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

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

设计和测试在Simulink万博1manbetx

写你的算法和测试平台添加到它。该模型包括针对一个测试台典型的子系统,例如刺激产生,被测设备(DUT)的设计,并响应检查。

在此设计中,源子系统创建的的噪声的5000个样本帧嵌入在随机位置信息64个样本的随机脉冲。它还生成用于检测的脉冲的一组64个最佳匹配滤波器系数。输入被馈送到设计和响应检查器两者。该脉冲在嘈杂波形正确的位置检测出的响应检查器验证。正确的操作是通过控制台输出证实。如果检测到的信号的预期功率不是一定的限度内,一个断言进行烧成。

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

= 2163.000000 (FrameNum = 0)峰值位置,mag-squared = 0.280使用全球马克斯(FrameNum = 0)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 0)峰值mag-squared impl = 0.280,误差(abs) = 0.000误差(pct) = 0.017 (FrameNum = 1)峰值位置= 2163.000000,mag-squared = 0.200使用全球马克斯(FrameNum = 1)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 1)峰值mag-squared impl = 0.199,误差(abs) = 0.000误差(pct) = 0.190 (FrameNum = 2)峰值位置= 2163.000000,mag-squared = 0.224使用全球马克斯(FrameNum = 2)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 2)峰值mag-squared impl = 0.223,误差(abs) = 0.000误差(pct) = 0.183 = 2163.000000 (FrameNum = 3)峰值位置,mag-squared = 0.200使用全局马克斯(FrameNum = 3)峰值检测从impl = 2163错误(abs) = 0 (FrameNum = 3)峰值mag-squared impl = 0.200,误差(abs) = 0.000误差(pct) = 0.043 = 2163.000000 (FrameNum = 4)峰值位置,mag-squared = 0.255利用全球最大(FrameNum = 4)峰值检测从impl = 2163错误(abs) = 0 (FrameNum = 4)峰值mag-squared impl = 0.255,误差(abs) = 0.000误差(pct) = 0.031 = 2163.000000 (FrameNum = 5)峰值位置,mag-squared = 0.241使用全球马克斯(FrameNum = 5)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 5)峰值mag-squared impl = 0.241,误差(abs) = 0.000误差(pct) = 0.187 = 2163.000000 (FrameNum = 6)峰值位置,mag-squared = 0.241使用全球马克斯(FrameNum = 6)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 6)峰值mag-squared impl = 0.241,误差(abs) = 0.000误差(pct) = 0.019 = 2163.000000 (FrameNum = 7)峰值位置,mag-squared = 0.225使用全球马克斯(FrameNum = 7)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 7)峰值mag-squared impl = 0.225,误差(abs) = 0.000误差(pct) = 0.032 = 2163.000000 (FrameNum = 8)峰值位置,mag-squared = 0.239使用全球马克斯(FrameNum = 8)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 8)峰值mag-squared impl = 0.239,误差(abs) = 0.000误差(pct) = 0.037 (FrameNum = 9)峰值位置= 2163.000000,mag-squared = 0.225使用全球马克斯(FrameNum = 9)峰值检测impl = 2163错误(abs) = 0 (FrameNum = 9)峰值mag-squared impl = 0.225,误差(abs) = 0.000误差(pct) = 0.146 = 2163.000000 (FrameNum = 10)峰值位置,使用全局max [FrameNum= 10]峰值检测得到的impl=2163误差(abs)=0 [FrameNum= 10]峰值检测得到的impl=0.207误差(abs)=0.000误差(pct)=0.134

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

使用uvmbuild功能设计导​​出到UVM环境。该UVM测试台提供结构的HDL验证流程,并允许所有Simulink的测试工作台部件和测试用例由执行核查小组被重用。万博1manbetx标准组件定义通过其在模拟角色分开环境的碎片。对于这个例子:

  • PulseDetector被映射到DUT的SystemVerilog模块

  • GenPulse子系统被映射到sequence_item创建为序UVM组件

  • CheckDetection子系统映射到记分牌UVM组件。

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

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

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

SystemVerilog/UVM代码确定DPI调用的时间。例如,在脉冲检波器SystemVerilog模块中:

  • 该“初始化” DPI呼叫由一个“起始”码块触发。

  • “terminate”DPI调用由“final”代码块触发。

  • “复位” DPI呼叫被激活的复位信号触发。

  • “输出”和“更新” DPI电话由一个时钟上升沿其中复位没有被激活的时钟使能激活触发。

运行UVM试验台

uvmbuild流程还生成一个脚本来运行UVM测试的模拟。为下列模拟器生成脚本:

  • 导师Graphics®的ModelSim®和Questa®:run_tb_mq.do

  • Cadence的精辟™:run_tb_incisive.sh

  • Cadence的Xcelium™:run_tb_xcelium.sh

  • Synopsys®VCS®:run_tb_vcs.sh

所生成的ModelSim脚本如下所示。

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

%清除了影响UVM仿真环境变量”setenvEXTRA_UVM_SIM_ARGSsetenvEXTRA_UVM_COMP_ARGSsetenvUVM_TOP_MODULE
%使用2.0的信噪比模拟UVM测试平台光盘prm_uvmtb_uvmbuild uvm_testbench /setenvEXTRA_UVM_SIM_ARGS+ SNR_default_inp_val = 10000000!VSIM -do run_tb_mq.do%的ModelSim / QuestaSim(GUI)!VSIM -c -do run_tb_mq.do%的ModelSim / QuestaSim(控制台)!./run_tb_incisive.sh % Incisive(控制台)!./run_tb_xcelium.sh % Xcelium(控制台)!./run_tb_vcs.sh%VCS(控制台)光盘../../ ..

仿真日志显示相同的诊断消息:

和波形示出了DUT接口信号的时序。光标被放置在帧边界,并显示匹配滤波器系数的瞬时更新。