微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 验证FPGA设计:模拟,仿真,还是碰运气?

验证FPGA设计:模拟,仿真,还是碰运气?

时间:08-04 来源:互联网 点击:
曾几何时,要验证 FPGA 的逻辑设计,可以先编译、写入,然后按下评估板上的复位按钮。但是,随着FPGA规模的增大,这种被Xilinx公司软件产品营销总监Hitesh Patel 称为“blow and go”(逃生法)的验证方式已不能满足要求。要做出一个近乎完美的有百万个门的设计,达到可以从封装引脚就可以调试的地步,成功的机会非常之渺茫。因此,FPGA设计组也开始采取ASIC设计组已使用多年的方法,采用基于软件的设计模拟。

  但是这种方法也引出了一系列重要的问题: FPGA设计中模拟的作用应该跟在ASIC设计中一样吗?验证人员是否还是要在某个时刻将设计装入产品FPGA并马上开始测试它?如果是这样,这个时刻是在什么时候?为了弄清设计团队现在都在做什么,我们询问了一些工作中与FPGA用户关系最紧密的人。作为参考,我们还询问了几个在验证过程中采用FPGA 原型来进行ASIC设计团队,以了解他们的意见。

  优点和缺点

  多数人讨论验证流程时,首先会比较模拟和在FPGA内验证的优劣。尽管有经验的读者可能会觉得乏味,本文也还是采用类似的模式。

  模拟的一个很大的优点自然是它的访问能力。该方法可以以时钟周期分辨率观察RTL (寄存器传输层)设计中任何信号。只要有必要,对设计状态的控制可以达到任何水平。达到可观性和可控性的唯一限制就是对RTL的了解程度和对模拟环境的掌握程度。你可以在有限的设计领域交互式地工作,也可以构建运行好几天的大型试验。构建的模拟项目运行相对较快,所以可以快速地对很多东西进行试验。

  模拟的另一优点是现在的多数模拟环境都可以很好地使用OVL(开放验证库,Open Verification Library)或SystemVerilog断言。经常可以找到直接的方法将这些断言输入到模拟环境中。随着基于断言的验证日益普遍,这点就越发重要。此外,通过模拟环境还可以将设计的激励和测量部分与设计本身分割开。这看起来似乎不是主要问题,但是,在密集验证工作中,这一特点对于保证设计的完整性会很重要。

  但是,模拟比较慢。“如果你在做一个有2百万或3百万个门的块,模拟非常好,” 硬件仿真设备厂商Eve的营销副总裁Lauro Rizzatti说。“但是,在有多个块的层次,模拟会变慢,最终达到完全不可用的程度。”

  设计的复杂度并不是唯一的限制因素。Altera公司技术营销高级经理Phil Simpson指出,如果设计本身就需要大量数据来进行验证,即使在块的级别模拟也会变得不实用。他以视频编解器为例说明这个问题。在视频编解器中内部状态非常之多,所以可能只有在15分钟的视频短片中间才能表露出问题。但是,对15分钟高清视频压缩和解压的模拟会非常费劲。

  对电路内方法的讨论

  FPGA 内验证方法的优劣与模拟正好相反。首先, 显然FPGA 很快。人们经常可以以全速运行设计。不过,在某些情况下,这样做就意味着时序收敛问题会较多,超乎设计早期预期的程度。另外,与模拟不同,将多个模块综合到设计中时,FPGA 并不会降速。这样就可以测试整个设计,而非单个块,并且可以以大量的实际数据集来运行测试,而不是采用精心编制的测试用例。

  由于FPGA速度较快,而且它的I/O部件就是实际应用所需要的I/O部件,所以也可以采用系统中测试设计:可以在装入目标系统的FPGA开发板上测试,或者,如果目标PCB(印刷电路板)可以用的话,就在目标PCB上测试。这样的测试可以消除测试用例是否能够如实反映设计工作环境的疑虑。另外,在实际使用的电路板上测试设计可以暴露出I/O方面的问题——例如电气问题、信号完整性问题,或是在高速串行协议下不兼容问题。这些问题用其他方法几乎无法检测,而系统内测试则会形成一个软件测试平台,带来额外的好处。

  这些优点都是系统级验证方面的。但Altera公司的Simpson指出:在芯片内测试块也有一些有用的优点。“一旦将某个块装入FPGA,就可以使用嵌入式处理器核(如Nios)来辅助调试过程,” Simpson说。“例如,处理器核可以使数据进出芯片,可以控制测试时序。这样,在块周边电路还没做好的时候就可以单独测试某个块。”

  “在我们的自有IP(知识产权)开发部门,我们编写了在Nios核上运行的事务处理器,以此来生成伪随机测试,” Simpson 接着说。“据我所知,这样的做法在用户中还不普遍,但它非常有价值。”

  既然FPGA有这么多优点,您可能会觉得疑惑:直接将编好的核装入FPGA、为它编写一个试件(test fixture),然后开始测试 ,这样做会有什么问题呢?这个问题的答案在于FPGA的一些缺点。

  FPGA的缺点

  最明显的突出的问题是可见性。理论上说, FPGA中每个逻辑元件都可以通过芯片的调试接口观察。但是,厂商估计只有一半的FPGA用户在设计中加入了调试接口并将其用于验证。考虑到内置调试口提供的功能是如此强大,这非常令人吃惊。Xilinx公司的Patel认为,随着FPGA规模变大,人们会更普遍地使用调试接口。

  因此,在多数情况下,如果想观测设计中的某个信号,就必须先把它引出到一个引脚,然后用逻辑分析仪分析它。由于逻辑分析仪的特点,可能还需要引出大量其他信号,如内部时钟。这样做就会有很多额外的工作,另外,如果要观测的信号是一个与I/O块相隔甚远的快信号,可能还必须降低FPGA上的时钟频率。因此,一些经理认为:在原始验证方案中包括对FPGA信号可观性的要求是很重要的。

  访问信号所需的附加设计工作是该方法的一个缺点。芯片内部节点的激励和观测还涉及另一个问题,那就是需要修改设计、重建和重新综合测试,因此有可能导致设计和测试部分不能清楚地分割开。如果不能仔细地将调试代码和设计代码分开和切实做好版本控制,就可能无法跟踪这些修改,有可能发生类似于外科医生把手术工具留在患者体内的情况。

  另外,建立测试的时间也是个弱项。规模较大的设计中,综合时间并不短,而插入测试设备、重建、重新综合和重新绘图的时间也会是个重要因素,可以影响到是否进行某个试验。这里采用增量综合(Incremental-synthesis)工具会有所帮助,但是对于有2千万个门的设计,构造和合成过程可能需要一晚上的时间。

  最后,将测试平台从模拟环境转向FPGA环境也有问题。此时,激励模块需要有电路,而非一组模拟命令。观测某个节点需要的不仅是命令,还需要有电路和物理仪器。尽管基于断言的验证被越来越多的人接受,但似乎还没人开发出哪种方法可以系统性地将断言从模拟环境移植到FPGA。 “现在还没有可以自动将断言移植到FPGA的解决方案,但是我们收到的对该功能的要求在不断增加,” Simpson说。

  覆盖尺度也是一个弱项。虽然对于模拟环境正在开发完善的工具来测评验证覆盖情况和来自不同类工具的熔断测量值(fuse measurement),但在FPGA领域,几乎就没什么覆盖的概念,也没有现存的工具可用于测评测试设计的覆盖情况并将数据报告给中心覆盖收敛(coverage-closure)系统。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top