对于大多数验证开发者来说,新一天的工作通常从理解和解决前一天的回归调试失败开始。经过一晚的回归运行后,必须进行一些常规步骤。日常任务包括查询失败的测试、重新生成调试数据库、重新运行仿真以获取更多信息,以及确保不同功能场景和测试模式的正确性等。每个阶段都可能耗费大量时间,有时需要多次迭代,导致整个调试过程不断延长。
为了应对此类挑战,新一代新思科技Verdi®调试平台提供了多种功能,有助于避免在不同步骤之间来回切换。不过许多用户对于重复仿真的过程仍存在疑问。本文详细介绍了验证开发者在整个过程中可能要考虑的事项,并解释了用户如何在交互模式下利用Verdi功能来减少重复操作并缩短根本原因分析的时间。
经过一晚的回归调试之后,我希望第二天早上调试文件已准备就绪
“Verdi Instant Recall”功能对此很有帮助。回归运行时,Verdi Instant Recall与新思科技VCS®交互,提供调试信息,以便调试任何失败的测试用例。调试信息包含了所发生的错误以及相关位置,开发者可借其明确错误类别和调试起始位置,而无需手动重新运行仿真来生成其他调试数据。
▲ 图1 新思科技Verdi Instant Recall - 缩短回归调试周转时间(TAT)
在调试会话期间,我想运行“假设分析”实验,但又想避免重新编译和重新运行仿真
启用Verdi交互调试模式后,用户可进行多项即时修改,以便在单次仿真中设置和验证实验。仿真激励、更新随机配置和重新随机化等调整需要通过Verdi对单次仿真进行假设分析来完成。此外,Verdi无需依赖于预先存在的覆盖率观察器代码,便可即时生成随机值的概率分布情况,进而直观地呈现SystemVerilog约束条件解算器求解空间的交互式分析。此功能还支持对激励进行微调,以涵盖一系列需关注的值,从而加快调试速度。
在调试会话期间,我想查看这些值在之前的时间点是如何变化的,并通过更多的实验来观察这些变化
借助Verdi,用户可通过反向调试机制做到这一点。为此,用户通常要为需关注的点添加一些调试仿真断点并重新启动仿真,使其及时在断点指定的时间点停下来。在Verdi交互模式下,用户能够以超高自由度来控制仿真后退或前进到所指定的任何时间点,比如某个事件发生、对象创建或值更改的时候。
▲ 图2 新思科技Verdi Instant Recall - 缩短回归调试周转时间(TAT)
此外,这些实用功能还可以结合起来,进一步加快调试流程。例如,在使用Instant Recall功能完成回归分析之后,用户可以根据错误类型选择失败的用例,并立即使用所生成的调试数据库来启动Verdi进行调试。在调试过程中,如果需要调用前一个时间点的信号值,可以使用反向调试功能来找到特定的仿真时间点。另外,用户还可以使用不同的配置进行重新随机化,以此来观察概率分布。
结语
正如本文所述,新思科技Verdi调试平台的功能非常丰富,有助于提高调试效率。当开发者早上开始准备调试时,可借助Verdi提供的功能快速投入到工作中。本文分享的所有功能均有助于避免耗时费力的重新编译和重新仿真工作。充分利用一次仿真,缩短调试周转时间!