随着系统芯片 (SoC) 设计的体积与复杂度持续升高,验证作业变成了瓶颈:占了整个 SoC 研发过程中 70% 的时间。因此,任何能够降低验证成本并能更早实现验证 sign-off 的方法都是众人的注目焦点。
台湾工业技术研究院 (工研院, ITRI) 在今年的设计自动化大会(2011 DAC)提出的案例研究,提出一种能够显著提升客制化FPGA 原型板验证效率的创新方法,自动化现有的电路仿真(in-circuit emulation)侦错功能,并提供更高的 FPGA 能见度。这个以 FPGA 为基础的 SoC 验证平台对工研院而言是前景看好的崭新领域,对其支持台湾IC设计产业新技术领域的研发工作助益良多。
案例研究:高效能的多媒体SoC平台
这款 SoC 设计是高效能的 Android 兼容多媒体 SoC 平台。配置了 AXI、AHB 与 APB 总线,供通讯使用;由工研院(PACDSPs、EMDMA 与 DDR2 控制器) 设计的高效能客制化 IP 组件连结至 AXI 总线,加速 H.264 视讯编译码器 (video codec) 等多媒体应用软件的执行。包括 ARM、SDRAM、DMA、SRAM、Ethernet 与 LCD 在内的标准 IP 组件连结至 AHB 总线,适合于一般应用。最后,UART、Timer、I2S、I2C 与 Watchdog 等低频率的 IP 区块 (block) 则连结至 APB 总线。
下列案例研究说明了工研院与思源科技工程师如何合作,使用思源科技ProtoLink Probe Visualizer,克服工研院SoC 设计中出现的验证挑战。这个与音效功能相关的问题是:在 FPGA 原型板未激活 OS 的状况下,功能正常运作 (可录音与播放);但如果在原型板上启用 Linux,功能就无法正常运作。在 FPGA 原型环境中,要使用传统的侦错方法排除这类问题是相当困难的。FPGA 的能见度仅局限在少数的讯号与时脉周期内,无法提供足够的信息找出错误所在。而因为激活 OS (例如 Linux) 耗费的时间相当长,想透过缓存器转换阶层 (RTL) 仿真来解决问题也行不通。由于问题的成因可能在于软件、硬件或驱动程序,因此要确实找出问题的根本原因是一项考验。
与众不同的作法
要简化侦错作业,就需要更高效率的验证方法。ProtoLink Probe Visualizer 是新的原型验证环境,采用以软件为基础的方法,可以从RTL 设计阶段开始到最终的设计实现阶段,都提供高水平的设计能见度,,可全面加速侦错作业的进行。
工研院起初担心其客制化原型板可能无法符合思源科技ProtoLink Probe Visualizer 的接口需求,而思源科技工程师在进行几项快速测试之后,证明工研院客制化原型板上的标准 J 连接器可顺利地与执行 Probe Visualizer 软件的工作站连结。只需在原型板上新增锁相回路 (PLL),提供所需的取样时脉 (sampling clock)即可。FPGA 的设置流程相当简单,可轻松整合至现有的程序 (script) 中,自动选取大约 100 个探测讯号 (probed signal),就能见度来说,已比过去的方法提升 6 倍之多。此外,所有的探测资料都可储存在外接的 2GB 探测讯号内存中而不占用 FPGA 资源,真正额外需要的探测逻辑 (probe logic) 也仅占用 FPGA 的 2%,可说相当的少。外接内存的资料容量可储存充足长度的时脉周期,让工程师能够确实掌握软件、硬件与驱动程序间的关系。
工研院团队透过思源科技Verdi自动侦错系统的进阶观察、追踪与分析功能,来使用储存的探测资料进行侦错作业。在经过多次重复侦错之后,发现了两个问题:1) USB 中断 (USB interrupt) 长时间锁住 ARM,因此 I2S 内的 FIFO 是空的,因而造成问题; 2) 定时中断 (Timer interrupt) 的优先级高于 DMA 中断,因此再一次造成 I2S 内的 FIFO 是空的。工研院工程师使用思源科技软件的侦错功能,进一步分析设计行为,仅管表现出来是共通的错误征兆,工程师还是能够迅速发现这些错误的根本成因是源于两种不同的情况。
此外,观察额外的关键讯号是侦错时必需的,但这些讯号多半不在原始探测清单中。工研院工程师透过Probe Visualizer迅速的探测 ECO 流程,在 10 分钟内就可新增 10 个新讯号,而且不用重新编译整个设计。相对传统的侦错方法需要在 RTL 拖曳新讯号,并且针对这个特定的设计重新执行合成 (synthesis ) 以及布局与绕线作业,约需花上 2 至 3 个小时,因此这方面的革新省下了大量的时间。
工程师能够轻松地将 所需额外的RTL探测讯号由 Verdi 侦错环境拖曳至 Probe Visualizer。这套系统会自动建立RTL 至逻辑闸层 (RTL-to-gate level ) 的讯号对应关系,,所以可直接在 FPGA 布局与绕线档案上迅速执行部份绕线作业来看到新增的探测讯号,大幅缩短侦错作业时间,所以能在短时间内处理多重侦错工作阶段 (debug session)。而对设计中使用的「黑盒子」IP 区块,也只需 EDIF 名称,就可以进行探测 ECO 流程。
评估结果
工研院工程师在修正问题并成功试产设计之后,检讨了项目实际耗费的时间,并评估了这个新的 FPGA SoC 原型验证方法的成果。
进行 RTL 设计、仿真、通讯协议验证与 FPGA 设计实现的时间约为 2 个月。在驱动程序移植 (driver porting )上所花费的时间则短了许多,大约只有 2 个星期。工程师随后又花了 2 个月的时间进行验证作业,试图透过硬件逻辑分析器检查 FPGA 内部讯号解决音效问题,同时也在音效驱动程序中增加观察点,以连结并企图找出问题。这种传统的 FPGA 侦错方法,需要的时间和设计研发的时间一样长,然而对工研院团队而言,相当令人沮丧的是结果仍然一无所获。不过,在经过思源科技提供的应用软件教育训练/支持课程及一星期的实作经验后,工研院工程师使用 ProtoLink Probe Visualizer,在短短一星期的时间内就厘清了两大问题!
对工研院而言,ProtoLink Probe Visualizer是一种相当有效的 FPGA 原型板侦错方法。工程师再也不必局限在传统的侦错方法,而且在实时应用软件中增加观察点也可能会造成其它问题。透过维持原有软件并监测更多FPGA 讯号在数百万时脉周期内的实时 RTL 行为,使用者可以获得所需的能见度,更完美的掌握、更轻松地侦错设计的问题。
总合来说,思源科技Probe Visualizer 透过以软件为基础的创新方法,改变了原型板验证的方法,实现丰富、实时的设计能见度,并且让原型板能使用 Verdi 的侦错威力,使原型板侦错时间比传统的方法大幅缩短一半。这种侦错作业生产力与整体验证效率的提升,不仅能协助工研院在更早期的 SoC 研发流程中配置 FPGA 原型,并且能迅速移转至搭载最新 FPGA 技术的新一代原型板上,充分运用最新 FPGA 技术的优势。