SystemVerilog 中小型(即一个人)设计的测试工作流程

Testing workflow for small (i.e. one person) design in SystemVerilog

我开始在 SystemVerilog 中实现设计,但就测试而言我有点不知所措。我尝试使用简单的 SystemVerilog 进行验证,但它似乎受到限制:

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

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

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

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

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

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

问候 斯里尼

免费和开源 VUnit 提供单击(= 单个命令)解决方案,它将找到您的测试套件和测试用例,(重新)编译什么需要(测试之间无需重新编译),运行 模拟,然后呈现 pass/fail 结果。

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

了解最基本的知识 here. The UART example above can be found in the examples directory

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

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