【问题标题】:Testing workflow for small (i.e. one person) design in SystemVerilog [closed]SystemVerilog中小型(即一个人)设计的测试工作流程[关闭]
【发布时间】:2017-06-19 03:47:57
【问题描述】:

我开始在 SystemVerilog 中实现设计,但就测试而言,我有点迷茫。我尝试使用简单的 SystemVerilog 进行验证,但似乎有限:

  • 通过查看日志可以发现错误(即使 $errorassert 也不会停止模拟),因此很容易被遗漏。
  • 我不能 (?) 运行所有测试,因为 Vivado 只允许使用一个作为活动测试
  • 我可以将所有内容都放在单个测试模拟中,但用于调试的波形似乎太长了,因为它混合了各种测试。
  • 我可以尝试创建自己的框架,但这听起来像是重新发明轮子,这是个坏主意。

我知道SVUnit,但它似乎适用于昂贵的模拟器,而不是我有许可证的 xsim。我正在尝试研究 UVM,但我不确定时间的投资是否值得。

对于来自个人、单人、FPGA 项目的软件(驱动程序)的人来说,什么是 SV 的良好测试工作流程?

【问题讨论】:

  • “我无法运行所有测试”究竟是什么意思?这取决于您如何定义测试。
  • 我很确定 Vivado Simulator 不支持 UVM 所需的结构。
  • xsim 是否有 TCL(或任何其他命令行脚本接口)?
  • 结束投票:由于许多解决方案需要数千美元的工具,因此我不再认为基于 other similar questions 的意见。
  • @TudorTimi 我认为你是对的,它不支持 UVM。我不知道它是否支持 TCL - 我想是的。 “运行所有测试”是指单击所有测试套件后,我会得到结果,例如,7/10 测试通过,其中每个测试可能是单独的配置。

标签: unit-testing fpga system-verilog hdl uvm


【解决方案1】:

免费和开源 VUnit 提供单击(= 单个命令)解决方案,可以找到您的测试套件和测试用例,(重新)编译所需的内容(测试之间无需重新编译) ,运行模拟,然后显示通过/失败结果。

VUnit 最初是一个 VHDL 单元测试框架,但由于大部分顶级自动化与语言无关,因此它已更新为也支持 SystemVerilog。 VHDL 和 SV 支持之间的区别在于,VUnit 为 VHDL 提供了许多测试平台支持包,而这些包在 SV 中是找不到的。另一方面,其中一些功能已经是 SV 的一部分。

了解最基本的here。上面的UART示例可以在示例directory中找到。

VUnit 支持 Mentor、Aldec 和 Cadence 的模拟器以及开源 GHDL。它今天不支持 Vivado,但它是 discussed。但是,您可以使用免费的 ModelSim Altera 版

免责声明:我是 VUnit 的作者之一。

【讨论】:

    【解决方案2】:

    运行所有测试通常不会在一次模拟器调用中完成。这由不同的工具作为多次调用处理,该工具通常执行更多操作(在计算场中分配作业、集中状态等)。

    通常通过检查日志文件来确定测试是通过还是失败。如果检测到错误,它应该显示在日志中,您可以使用 grep 查找它。模拟器的退出代码不用于此目的,因为非零退出代码意味着工具调用有问题,而不是模拟本身有问题。

    在您的情况下,由于您只有模拟器可用,因此您必须构建大量基础架构。您需要一个可以运行单个测试并可以确定它是通过还是失败的脚本(通过 grep、Perl 等)。然后,您可以定义另一个脚本,循环遍历所有测试,调用之前的脚本并计算摘要。

    【讨论】:

    • @MaciejPiechotka 这里还有一些细节与避免在测试运行之间重新编译有关,这也是我询问您的工具是否支持 TCL 的部分原因。不过,您似乎已经进行了一些 SystemVerilog 测试。对于 10 个测试,在这里进行优化实际上没有意义,但是如果您运行例如 1000 个测试,那么浪费在重新编译上的时间就会变得更加重要。
    • 谢谢 - 我认为这些工具在非 HDL 语言世界中已经准备就绪,并且没有必要重新发明轮子。看起来情况并非如此。
    • @MaciejPiechotka 它们存在,但它们要么是专有工具,要么是商业工具。例如,在我工作的地方,我们有一个用于测试运行管理的内部工具,但我们放弃了它,转而使用付费工具。
    • @MaciejPiechotka 这可能会成为一个不错的开源项目,但我不知道是否对此感兴趣。
    【解决方案3】:

    你试过 VUnit 吗?如果您有兴趣运行 UVM,我们确实有一个 UVM 基类的端口,它作为 Go2UVM (www.go2uvm.org) 的一部分在免费的 Modelsim 上运行(有一些限制,例如没有随机化、覆盖、SVA 等)。

    问候 斯里尼

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 2018-04-13
      • 2014-11-23
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      相关资源
      最近更新 更多