提高复杂串行协议的调试效率

描述

调试复杂的串行协议是验证工程师面临的最大挑战。这是影响每个项目进度的最耗费时间和精力的活动之一。传统的调试方法使用松散连接的波形、日志文件、消息和文档的组合,这不足以进行高效的调试。使用日志文件调试 SoC 和块级问题既繁琐又耗时。在开发周期的后期阶段出现的设计问题可能极难跟踪和调试,从而使项目进度面临风险。

有没有办法简化调试过程和性能?如果可以查看数据包和交易而不是信号,不是更容易吗?在这篇博客中,我们将讨论用户在调试复杂协议时面临的一些挑战;并重点介绍基于 GUI 的事务调试解决方案,该解决方案既简单又快速。.我们将以USB为例,讨论复杂的功能,调试挑战和相应的解决方案。

让我们看一下USB 3.0协议的复杂性及其相应的调试挑战。USB 3.0 协议指定主机通过交换以下类型的信令和数据包来控制与设备的通信:

链接命令数据包

链路命令用于链路级数据完整性、流量控制和链路电源管理。这些数据包具有八个符号的固定长度,重复以增加容错能力。仅使用波形中的串行信号很难识别这些符号的模式。

协议命令数据包

首先,主机启动多个传输,如批量、中断、常时等量和中断。每次转账都有多个事务 - 设置、状态、传入和传出。根据类型,每个事务都有 TP(事务数据包)和 DP(数据包)的必要数据包组合。使用许多类型的TP,如ACK,NRDY,ERDY,STALL,PING等。然后,主机为多个设备地址和端点号启动这些数据包。对于调试,检查这些数据包的适当顺序在波形中是一项艰巨的任务。

低频周期信令 (LFPS)

LFPS 用于在“低功耗链路状态”下通过链路的两个端口之间进行边带通信。当链路正在训练中,或者当下游端口发出“热重置”以重置链路时,也会使用它。LFPS 功能涉及链路速度协商、退出低功耗状态和链路复位。识别波形中传输信号的时序具有挑战性。

还有其他挑战,例如:

USB 还定义了由单个事务组成的软件级传输。

USB 允许数据包突发,并且确认是流水线的,这使得查找与任何事务对应的响应数据包变得更加困难。

总线上不同端点的流量启动和交错数据包使得很难找到与端点对应的流量。

波形能否为这些验证挑战提供快速解决方案?我们需要知道总线上发生了什么来调试问题。波形将仅显示总线上的序列化数据包,手动解码所有串行数据以获取所需的数据包/事务/传输详细信息非常复杂。幸运的是,Verdi 协议分析器已被证明是一种简单有效的调试方法,可将生产力提高数倍。

Verdi 协议分析器按总线上发生的顺序显示分层事务活动,如下面的快照所示。选择相应的父传输时,所有链接的事务和数据包都会突出显示。

usb

Verdi 协议分析器为用户提供了传输、事务、数据包和协议握手的图形视图。它突出显示了整个层次结构之间的关系,直观地揭示了高度交错流量的复杂行为。对错误、警告和消息进行注释,以快速识别模拟中的问题。它使用户能够快速了解协议活动、识别瓶颈并调试意外行为。

我们已经描述了一些调试挑战,以及Verdi协议分析器如何帮助快速轻松地解决这些问题。有关更多详细信息,请阅读我们最近的白皮书 - “调试基于 IIP 的设计和 SoC 的简单方法:使用 Verdi 事务调试平台”。本白皮书介绍了使用 Verdi 事务调试平台(包括协议分析仪、波形查看器、源代码浏览器)使用“实时仿真数据”进行调试的概念,并通过常见 USB 验证挑战的示例演示了易用性和省时功能。

审核编辑:郭婷

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分