随着基于FPGA进行原型设计的复杂性不断增加,市场对更好调试技术的需求也日益增加。FPGA原型设计可用于验证、早期软件开发、概念证明等,因此变得非常重要。它的主要职责仍然是执行这些任务,而不是试图找出因原型构建错误而造成的问题。
根据可用的设计或现有任务类型,可能需要不同的调试技术。采用合适的调试技术还可以缩短FPGA设计的验证周期。
本文描述了有关FPGA的一些调试技术,采用这些技术可以加快验证过程,文章同时也指出了它们的局限性。这些调试技术可以用于硅前验证过程中所面临的各种挑战或问题,后面我们将会讨论。
RTL仿真
在RTL还没有完全稳定时,原型设计的一个主要需求是访问和监控内部信号的活动,这有助于找到造成问题的根源,无论问题是由于原型错误还是RTL本身的一些异常造成的。
测试时,RTL仿真需要在模块周围建立一个完整的原型验证仿真环境,能够给予激励,满足内存要求(如果有的话),监控设计错误等。
图1显示了此类RTL仿真设计模型。
图1:RTL仿真模型
图字:要求
验证计划
原型RTL仿真
原型RTL模型
执行板上工作
找到Bug 去除bug执行所有工作
假设/优势
● 此调试方法非常适用,而且在处理设计规模问题时,可以进行调整,目前验证工具可以轻松地处理设计规模问题,但要求仿真时间不能很长,否则会使这种工作几乎没有ROI(投资回报率),而要配备复杂的测试台。
● 如果是一个已经获得验证的设计,它能重新使用现有的验证测试平台,这样就不需要从头开始构建,可以节省时间和精力。
● 工作重点应该侧重于调整现有测试平台,以便使其不需要任何大的更改,就能够运行验证测试套件。
● 可以缩小问题,选择只运行失败仿真,减少对仿真的依赖,检查可能引起问题的信号的仿真波形。
局限性
● 如果是大规模设计,几乎不可能查看设计中的每个信号、监控其行为。
● 采用这种方法的一个前提条件是,验证工程师或软件工程师应该对设计和内部信号具有良好的洞察。
● 此方法比较费时,而且需要软件开发人员付出额外的努力。
● 在设计被分区的情况下,RTL仿真可能没有帮助。假设我们主要试图“再利用”顶层验证环境,并使其轻松为“受测设备原型”工作,要创建更多的层次和设计分区,则会需要进行额外的工作,以修改安装在独立验证环境中的内部信号探针。
● 调试涉及复杂处理的大规模快速流输出数据设计可能具有挑战性,因为这个问题可能在设计层次的各个层级存在。
在复杂的设计中,必须考虑一些更好、更快的调试方式,我们将在后面的章节中讨论。
使用逻辑分析仪的硬件调试
当调试总线位于FPGA的外部引脚上,并通过逻辑分析仪观察它们时,硬件调试涉及内部信号的呈现。这种调试技术对小型逻辑设计真的非常有帮助,因为验证工程师也可以使用逻辑分析仪观察到内部设计信号,从而使调试更加方便快捷。
图2显示了此调试模型。
图2:使用逻辑分析仪的硬件调试 |