嵌入式技术
ASIC 和 FPGA 变得非常复杂,特别是对于涉及多核的片上系统 (SoC) 设计。这种复杂性带来了更长、更繁琐的调试和验证周期。不幸的是,当出现故障或出错时,在高度集成的设计中访问测试点几乎是不可能的。除非您想在运行多个原型时花费数周时间在黑暗中拍摄随机错误,否则片上仪器不再是可选的;这是一个重要的必备品。
虽然有多种方法可以将仪器添加到 FPGA,但使用仪器网络的分布式方法正在成为首选方法,因为它最大限度地增加了潜在观察点的数量,同时最大限度地减少了硅面积或查找表的使用要求。对高效调试同样重要的是深度跟踪捕获,以了解系统的各个部分如何随着时间的推移进行交互。最后,设计人员必须能够观察多个器件和时钟域的交互,包括片上和片外,所有这些都是完全时间相关的,以获得真正的系统级视角。
总而言之,包括灵活和完整的观察点访问、深度跟踪捕获和系统级视图在内的创新有可能将 FPGA 和 ASIC 调试的游戏规则从漫长而艰巨的过程转变为快速而高效的过程。
调试挑战
在回顾实现嵌入式仪器的不同方法之前,首先了解为什么仪器是必要的会很有帮助。最大的原因仅仅是每个系统中不断增长的功能。
虽然过去有很多探测点(设备上的外部 I/O)可供选择,但现在无法观察到发生了什么,因为在大多数情况下,关键接口现在都在设备内部。与五年前相比,当前一代 FPGA 的并行运行功能数量增加了 100 倍,而外部输出的数量却保持不变。从试图调试意外行为的开发人员的角度来看,现代芯片只不过是一个大黑匣子。
似乎这还不够,虽然模拟器的功能继续以线性方式提高,但并行功能的每一次增加都会增加潜在组合的指数级增长。由于仿真一次运行在一种组合上,因此不可能涵盖硅前仿真运行中的所有功能。
由于无法充分模拟硅前所有可能的排列,导致在设计完成之前进行基于 FPGA 的原型设计。特别是在原型级别,访问观察点对于快速有效地调试功能问题非常有帮助。
另一个调试挑战是硅上嵌入式软件的出现。越来越多的 FPGA 和 ASIC 设计包括一个或多个处理器内核。此类系统可能包括软件、固件、嵌入式处理器、GPU、内存控制器和其他高速外围设备的复杂组合。这种增加的功能集成与更快的内部时钟速度和复杂的高速 I/O 相结合,使开发人员比以往任何时候都更难提供功能齐全且经过充分验证的系统。
片上信号捕捉
当系统涉及多个芯片和组件时,很容易移动逻辑分析仪探头以查看不同的信号组合。即使转向片上仪器,灵活地将虚拟逻辑分析仪探头移动到不同信号点的需求仍然保持不变。由于设计人员无法预测给定芯片的每个变量或潜在应用,因此可用的信号捕获点越多越好。
传统的 ASIC 方法使用具有共享选择信号的多路复用器网络(每个多路复用器级别一个)并提供 n/m 个不同的信号组合,其中 n 是探测点的数量,m 是同时查看的信号数量(调试总线宽度)。这是最严格但最简单的选项,因为它利用了简单的多路复用器。为了有效,这种方法需要大量的前期时间来创建与每个可能的调试场景相对应的信号组,并且一旦捕获点起作用,设计人员就只能查看同一组中的信号。此过程要求高、耗时且极不可能捕获所有调试场景。
另一个极端是创建一个完整的交叉开关多路复用器,以提供完全的信号灵活性,这需要 m 个大小为 n:1 的多路复用器。相对于面积而言,这可能会很快变得昂贵,这使得这种方法对于除了最小的情况之外的所有情况都是不切实际的。
中间立场是要么增加多路复用器结构内的选择信号数量,要么创建多个具有不同信号排序的重复组。共享选择多路复用器和带有附加选择信号的多路复用器都在许多本土方法中实现。虽然共享选择多路复用方案可以处理常见和预期的调试场景,但它们仍然没有达到理想的完整覆盖范围。因此,它们不适合解决意外问题,并且通常会导致实现效率低下,因为信号会重复连接到多个多路复用器。
通过利用多级无序网络(通常称为集中器网络),可以找到更优雅、更高效的解决方案。这种新方法有效地创建了一个观测网络,并且正在商业化。使用独特的网络架构和互补的路由算法,观察网络提供了完整交叉开关多路复用器的信号灵活性,而在大多数情况下,只需要共享简单多路复用器的裸片面积。表 1 显示了使用不同方法计算的信号可见度的比较。
表 1:观察网络提供与多路复用器相同级别的信号可见性,同时需要相似或更少的裸片面积。
通过观察网络,设计人员可以使用自动化工具以寄存器传输语言 (RTL) 实现片上信号捕获探针。在设计阶段,无需担心不同的信号组合或排序,因为每种组合都可用。结果是一个随信号数量线性增长的观察网络。这种方法将确定路由的复杂性从芯片转移到软件中。在产生显着的面积/性能改进的同时,观测网络需要复杂的算法来确定路由,因此如果没有商业软件来控制信号选择,就很难使用它。
在观察点可见性方面,网络方法比简单多路复用器的优势有多大?以这个例子为例,其中探测了 256 个信号 (n),同时可见 32 个信号 (m):
简单多路复用器:信号组合数(可见性)= 256/32 = 32
观测网络:信号组合数(可见度)= 2^256 = 1.2 x 10^77
相差76个数量级。虽然第一种方法具有高度限制性,但观察网络方法提供了任何可能的信号组合。以大致相同的成本,观测网络提供了巨大的优势,其灵活性更高。
最大化捕捉深度
对于跨越硬件和软件的调试挑战,捕获长迹线的能力对于追踪在数千或数百万个时钟周期内出现的问题至关重要。在硅后和 FPGA 上,深度捕获对于了解整个系统的工作方式至关重要,因为许多无法验证的错误需要很长时间才能出现。此外,大多数软件驱动的功能跨越数十万到数百万个时钟周期。
传统的仪器方法在从观测探头接收到的信息时,使用内部 RAM 中的一个条目来捕获每个时钟周期捕获的数据。使用这种方法很难或不可能一次捕获超过几千个时钟周期而不会对内部存储器资源造成不可接受的压力。出于这个原因,现在开始使用压缩技术来提高捕获深度。
然而,大多数众所周知的压缩算法都不太适合跟踪压缩,它们是为视觉媒体和通信应用开发的。一起使用多种压缩技术的专用跟踪压缩层,每一种都专门针对常见的跟踪数据模式进行定制,现在已经上市。对于大多数实际应用,这可提供 10-1,000 倍的深度,而不会损失分辨率。
高效的系统范围调试
更高效的 FPGA 和 ASIC 调试的最后一个难题是时间相关的系统范围视图,它跨越多个并行运行的时钟域。当问题需要跨多个检测区域进行关联时,设计人员正在考虑获取单个轨迹然后手动关联事件的耗时过程。例如,基于 FPGA 的原型设计平台上的平均 ASIC 原型由跨四到八个 FPGA 的每个 FPGA 两到三个时钟域组成。这意味着设计人员将需要单独调试 8 到 24 个时钟域。一次跟踪这 24 个域中的每一个并手动将结果拼凑在一起既耗时又容易出错。
一种更有效的方法是使用逻辑分析仪软件从在多个时钟域和多个设备中运行的独立仪器生成时间相关视图,如图 2 所示。专用调试软件可以从芯片的每个仪器区域收集数据,反转压缩算法,然后对齐捕获的数据以生成系统范围的时间相关视图。这导致单一的跟踪捕获和调试方案,既节省时间又提供许多功能单元和时钟域的同时硬件调试。此过程通常会揭示在构建设备时从未考虑过的紧急系统行为。
图 2:时间相关视图加速系统级调试。
创新应对意外
随着复杂性的增加和对探测点的访问受限,ASIC 和 FPGA 验证和调试变得乏味且耗时。随着越来越多的功能集成到每个芯片中,对探测点的物理访问变得不可能。接下来的挑战是整合足够的片上观察点,不仅可以处理预期的调试场景,还可以处理意外的调试场景。
即使是最复杂的设计,也能更快、更有效地验证和调试的一项关键创新是观察网络。与观察信号的传统共享选择多路复用器方法相比,观察网络可提供更多具有相似芯片面积要求的信号组合。
支持更高效调试方案的其他创新包括使用高级压缩算法来提高片上存储器捕获深度,以及逻辑分析仪软件的出现,该软件可以生成跨越多个设备和片外仪器的时间相关的系统范围视图。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !