SystemVerilog 中小型(即一个人)设计的测试工作流程
Testing workflow for small (i.e. one person) design in SystemVerilog
我开始在 SystemVerilog 中实现设计,但就测试而言我有点不知所措。我尝试使用简单的 SystemVerilog 进行验证,但它似乎受到限制:
- 通过查看日志发现错误(即使
$error
和 assert
也不会停止模拟),因此很容易错过它们。
- 我不能 (?) 运行 所有测试,因为 Vivado 只允许使用一个作为活动测试
- 我可以将所有内容都放在单个测试模拟中,但是用于调试的波形似乎太长了,因为它混合了各种测试。
- 我可以尝试创建自己的框架,但这听起来像是重新发明轮子,这是个坏主意。
我知道 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 的作者之一。
我开始在 SystemVerilog 中实现设计,但就测试而言我有点不知所措。我尝试使用简单的 SystemVerilog 进行验证,但它似乎受到限制:
- 通过查看日志发现错误(即使
$error
和assert
也不会停止模拟),因此很容易错过它们。 - 我不能 (?) 运行 所有测试,因为 Vivado 只允许使用一个作为活动测试
- 我可以将所有内容都放在单个测试模拟中,但是用于调试的波形似乎太长了,因为它混合了各种测试。
- 我可以尝试创建自己的框架,但这听起来像是重新发明轮子,这是个坏主意。
我知道 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 的作者之一。