Debugging Solution
在芯片前端设计流程中,软件仿真、硬件仿真与原型验证共同构成了功能验证的三大支柱。三者中原型验证则以接近真实硅片的运行速度见长,但在调试与观测工具上,许多工程师会使用FPGA芯片供应商提供的调试工具,但这些调试手段相对单一且有限。对此,思尔芯就提供了全面且灵活的调试解决方案,并配备完整工具链,极大提升了用户效率。这些功能的增加主要是由于思尔芯面向广泛的客户需求,而这是其他厂商可能未能提供的。
一个典型的原型验证调试流程,通常经历以下几个阶段,每个阶段所依赖的调试手段也各不相同。
当用户将设计首次下载到 FPGA 后,往往无法立即正常运行。失败可能来自三方面:原型验证系统自身的物理连接或配置错误、RTL 设计本身存在功能缺陷、编译与实现阶段引入的问题(如设计分割、引脚复用导致的时序异常)等。此阶段的核心任务是:确认“硬件是否真正跑起来了”。常用调试手段:基本 I/O 观测、外部逻辑分析仪等。
这一阶段的目标不是深入分析逻辑,而是排除“根本没跑起来”的基础性问题。在此基础上,思尔芯的调试方案进一步提供了增强型的远程调试能力,以应对复杂环境下的连接需求:
虚拟 JTAG:在进行远程设计下载或波形调试时,无需物理 JTAG 线缆,即可通过以太网传输 JTAG 数据包,实现远程程序的下载与调试,极大提升了异地协作的便利性。
虚拟 I/O(VIO):支持对用户 DUT 进行数据赋值与信号读取。用户只需给定 VIO 信号约束,工具即可自动完成 VIO IP 的插入,且单颗 FPGA 可挂载上百个 VIO 设备,在不消耗额外物理线缆资源的前提下,显著扩展了系统的在线观测与控制能力。
在确认I/O接口正常工作后,通常会进行信号级别调试。这一步是为了深入分析设计中的关键信号,特别是在调试复杂的逻辑和状态机时。
信号级别调试(Signal level debugging):捕捉和分析内部信号的变化,识别可能导致功能异常的信号错误或不一致性。
在确认原型验证系统基本工作正常后,调试重心转向系统级功能验证,尤其是 SoC 中复杂的总线交互与外设行为。此阶段的核心任务是:确认软硬件接口是否打通,各模块是否按预期响应。常用调试手段:
AXI 总线事务调试(Bus transaction debugging):直接在 AXI 总线上发起读/写事务,验证寄存器访问、DMA 传输等功能。思尔芯通过低带宽AXI事务(以太网,约10MBps)和高带宽AXI事务(PCIe,约6GBps)的调试,可以确保数据传输的正确性和效率。DUT(被测设备)事务级别的访问特别适用于早期软件开发阶段,确保设计行为符合预期。

图1:一个典型的总线事务调试系统架构
在思尔芯的原型验证系统中,事务处理器在接收主机传来的信息后,与DUT进行交互,从而模拟和验证设计的实际行为。该结构可以有效地调试和验证设计中的数据传输和事务处理过程,确保数据在总线上的传输是正确且高效的,从而避免数据丢失或传输错误。
基于协议的连接调试:利用协议分析工具或协同仿真接口,从 PC 端快速控制原型系统,跳过繁琐的嵌入式软件开发
内嵌逻辑分析仪:抓取总线握手信号、状态调转等关键信号,确认协议交互是否符合设计预期。例如Xilinx的ILA、Intel的ELA等FPGA厂商工具,这类工具可设定触发条件,对内部信号进行捕获、记录与分析,是调试和优化设计的重要方法。但需注意的是,当采样深度较大(如128K)且通道数较多(如2048个)时,此类工具会消耗较多FPGA内部的逻辑单元与存储块(例如M20K块),在资源受限的设计中可能出现容量不足的问题,从而限制调试的深度与复杂度。
这一阶段是原型验证中工作量最大、问题最密集的部分。针对上述挑战,思尔芯的静态探针调试方案提供了精细化的观测能力,可覆盖从底层接口到高层逻辑的全方位验证需求,典型应用场景包括:
初始 Bring-up 阶段的基础信号观测:如时钟稳定性、复位释放、PLL 锁定状态等
协议接口链路调试:针对 PCIe、AXI 等接口的链路建立、握手过程及状态跳转进行深度分析
功能验证与 Bug 定位:对 FSM 状态机、valid/ready 握手信号以及异常中断等进行精细化追踪,快速锁定问题根源。
此外,相较于Signal TAP II,思尔芯的MDM 2X/2I模块在资源管理和调试能力上实现了更好的平衡。
深度调试套件(如思尔芯 MDM):MDM模块以55MHz的采样速度,能够追踪每个FPGA上多达32K个探针,并且无需重新编译即可存储高达8GB的波形数据。这不仅大幅降低了资源消耗,还提供了强大的调试功能,使其成为复杂设计调试的理想选择。

图2:思尔芯的深度调试套件MDM
当系统出现偶发性死锁、时序相关错误或跨 FPGA 信号异常时,常规手段往往难以复现和定位问题。此阶段的核心任务是:在大规模多 FPGA 系统中,精准捕捉深层故障根源。常用调试手段:
高级触发与追踪:设置复杂触发条件,捕获偶发错误,避免“看不见、抓不到”的困境
深度调试套件(如思尔芯 MDM):无需FPGA重新编译即可跟踪多达16K个探针、最小化FPGA资源使用,以及支持跨SoC设计的系统级调试等。这些特点使得MDM Pro在处理复杂、多FPGA系统时,展现出显著优势。为了适应不同的设计需求,MDM Pro还提供了IP模式和编译模式两种操作方式。IP模式允许用户直接在RTL代码中插入MDM IP,从而简化了调试过程;而编译模式则包括从综合、分区到调试的完整流程。这两种模式为用户提供了灵活的调试选项,能够适应不同的设计需求。
这一阶段直接决定调试效率和问题收敛速度。针对此类深层问题,思尔芯的动态探针调试方案提供了强有力的支撑。在实际场景中,若上板后发现设计异常挂死,而在前期并未预设静态探针,就需要一种能够在 PR(布局布线)后直接捕获 FPGA 内部信号的方法。典型使用场景包括:
查看系统中特定寄存器的配置值
系统挂死时,读取 PC 指针等关键标志位(如在 CPU 设计中定位运行挂死问题)
系统未挂死时,确认未接入总线的人工智能核间寄存器配置传递是否正确
该方案具备以下核心优势:
无需预置探针信号,即可捕获 FPGA 内部静态或半静态信号值
支持秒级抓取约 100+ bit 宽度的数据
可将多次抓取结果保存为波形文件,并自动反标回 RTL,实现软硬件联合调试的无缝衔接
多数用户在上板测试阶段习惯依赖 FPGA 厂商提供的内嵌逻辑分析仪进行调试,这类工具虽然在中小规模设计中游刃有余,但在面对大规模复杂 SoC 原型验证时却显得力不从心。随着设计规模扩展到多 FPGA 系统,信号观测范围大幅扩张导致逻辑分析仪的资源消耗呈指数级上升,同时跨芯片信号的统一管理与协同观测难度也显著增加,传统单点式的调试手段已难以应对现代原型验证对深度、广度和效率的综合需求。
正因如此,思尔芯为工程师提供了一套全面且灵活的调试解决方案,旨在覆盖从简单到复杂的多种验证场景:
实时控制软件(Player Pro-RunTime):用于原型平台初始化与运行控制,提高上板效率
设计调试软件(Player Pro-DebugTime):提供信号级调试能力,支持复杂触发与深度观测
深度调试套件(MDM):针对多 FPGA 系统,实现跨芯片的统一调试管理
协同仿真软件(ProtoBridge):打通 PC 与原型系统的高速交互通道,加速软硬件联调
通过这一整套工具链,思尔芯帮助用户在原型验证的每一个阶段——从基础连通性检查,到系统级功能验证,再到复杂问题深度定位——都能获得匹配场景、高效可控的调试手段,从而显著缩短整体调试周期,提升原型验证的成功率和效率。