雷竞技注册

PlTbUtils用于自动,自检模拟测试平台

PlTbUtils用于自动,自检模拟测试平台

细节

类别:测试/验证

创建:2013年4月14日

更新:2020年1月27日

语言:硬件描述语言(VHDL)

其他项目属性

发展现状:稳定的

额外的信息:设计完成,规格说明完成

叉骨兼容:没有

叉骨版:N/A

许可:LGPL

描述

PlTbUtils可以很容易地创建自动的、自检的模拟测试台,并在模拟期间定位错误。它是一个函数、过程和测试台组件的集合,用于简化刺激的创建和被测设备的检查结果。

特点:

  • 在记录窗口以及波形窗口中打印模拟状态(错误计数,检查计数,当前测试的编号和名称等)。
  • 当检查失败时输出有意义信息的检查过程。
  • 在模拟结束时清除成功/失败消息。
  • 通过研究误差计数器在波形窗口中的增量,可以很容易地确定错误的时间点。
  • 用户定义的信息消息在波形窗口中正在发生什么。
  • 脚本为解析准备的文本输出,例如在回归测试中。
  • 在持续集成环境中使用的可配置状态消息,例如TeamCity。
  • 减少测试中的代码数量,使它们编写得更快,更容易阅读。
  • 在测试运行中可以很容易地包含或跳过测试。
  • 支持VHDL-93及以上版本。
  • 支持最流行的VHDL模拟器,包括ModelSim, ISE ISim和Vivado XSim。

通过添加越来越多的函数、过程和测试台组件,PlTbUtils将不断扩展。欢迎评论、反馈和建议到pela.opencores@gmail.com。

项目的网页:http://opencores.org/project,pltbutils
Subversion存储库URL:http://opencores.org/ocsvn/pltbutils/pltbutils/trunk
Subversion导出命令:

SVN export http://opencores.org/ocsvn/pltbutils/pltbutils/trunk pltbutils

看到PlTbUtils规范

一个简短的介绍

例如波

在模拟过程中,波形窗口显示当前测试数,测试名称,用户定义的信息,累计的检查和错误数。当错误计数器增加时,就会在那个时间点发现一个错误。

示例文本

记录窗口清楚地显示了模拟开始、结束和检测到错误的时间点。模拟以一个明确的SUCCESS/FAIL消息停止,该消息是专门为脚本解析而格式化的。

示例文本,错误修正

测试用例代码紧凑且切题,这使得需要编写的代码更少,并且使代码更容易阅读,如下面的示例所示。

图书馆ieee;使用ieee.std_logic_1164.all;使用ieee.numeric_std.all;使用work.txt_util.all;使用work.pltbutils_func_pkg.all;——注意:以下代码的目的是演示PlTbUtils的一些——特性,而不是进行彻底的验证。p_tc1:进程变量pltbv: pltbv_t:= C_PLTBV_INIT;Begin startsim("tc1", "", pltbv, pltbs);rst < = ' 1 ';carry_in < = ' 0 '; x <= (others => '0'); y <= (others => '0'); starttest(1, "Reset test", pltbv, pltbs); waitclks(2, clk, pltbv, pltbs); check("Sum during reset", sum, 0, pltbv, pltbs); check("Carry out during reset", carry_out, '0', pltbv, pltbs); rst <= '0'; endtest(pltbv, pltbs); starttest(2, "Simple sum test", pltbv, pltbs); carry_in <= '0'; x <= std_logic_vector(to_unsigned(1, x'length)); y <= std_logic_vector(to_unsigned(2, x'length)); waitclks(2, clk, pltbv, pltbs); check("Sum", sum, 3, pltbv, pltbs); check("Carry out", carry_out, '0', pltbv, pltbs); endtest(pltbv, pltbs); starttest(3, "Simple carry in test", pltbv, pltbs); print(G_DISABLE_BUGS=0, pltbv, pltbs, "Bug here somewhere"); carry_in <= '1'; x <= std_logic_vector(to_unsigned(1, x'length)); y <= std_logic_vector(to_unsigned(2, x'length)); waitclks(2, clk, pltbv, pltbs); check("Sum", sum, 4, pltbv, pltbs); check("Carry out", carry_out, '0', pltbv, pltbs); print(G_DISABLE_BUGS=0, pltbv, pltbs, ""); endtest(pltbv, pltbs); starttest(4, "Simple carry out test", pltbv, pltbs); carry_in <= '0'; x <= std_logic_vector(to_unsigned(2**G_WIDTH-1, x'length)); y <= std_logic_vector(to_unsigned(1, x'length)); waitclks(2, clk, pltbv, pltbs); check("Sum", sum, 0, pltbv, pltbs); check("Carry out", carry_out, '1', pltbv, pltbs); endtest(pltbv, pltbs); endsim(pltbv, pltbs, true); wait; end process p_tc1; end architecture tc1;