随着综合技术、物理设计以及半导体制造技术的不断发展,千万门系统级芯片(SoC)设计已经成为现实,未来一年里将开始出现大量这种类型的芯片设计。但遗憾的是,许多设计小组仍然希望沿用十年前在十万门设计中用过的工具和方法来验证这些庞大硬件描述语言(HDL)的逻辑功能,现有方法即使在百万门设计中就已经到达极限,这些方法要占用60%的设计周期,所以大容量现代化设计的功能验证需要新工具和新技术。
传统功能验证方法是一种“黑盒”方式,也就是在寄存器转移级(RTL)设计输入端施加激励信号,然后将输出值与预期值相比较,这种端到端方式不考虑内部的细节。黑盒方法包括直接模拟、伪随机模拟和系统级模拟,但对大型SoC设计的完整功能验证这些方法常常是不够的,理由有两点:
- 可观察性较差。一个缺陷的影响常常要经过多个周期才看得到,并且在电路内还需要特殊的感应部分连接到设计输出,端到端试验方法无法检测出这些缺陷。
- 可控性较差:触发一个缺陷所需的激励序列一般都很复杂,测试编程人员无法人为产生这些序列,而且伪随机和系统级环境也不太可能从根本上产生这种序列。
随着设计容量的增大,可观察性和可控性也越来越糟,所以大型SoC设计的功能验证成为一个严重问题。用传统的黑盒方法验证千万门设计就像在一个黑暗的大房间里用微型电筒抓苍蝇一样,每个苍蝇都是一个挑战,你根本就不知道何时才能完成!
与黑盒工具不同,“白盒”功能验证工具使用设计的RTL技术详细信息来改进观察性和可控性,与模拟技术一起使用时可以快速可靠地达到功能验证的要求。白盒工具最好采用下述四个步骤进行:
- 使用含有丰富检验程序和命题的库来配置RTL设计内部结构以获得良好可观察性。确保所有担心的问题和设计人员假设都经过检验,特别是在设计最复杂的区域,即使模拟测试组件还没有将缺陷的影响传到输出端,正确配置的检验程序也能在这些区域立即发现缺陷。使用的检验程序与测试基准无关,故而RTL模块在不同环境中再次使用时检验程序无需进行修改。
- 使用能立即发现“接口协议”冲突的检验程序和监测器来加强设计接口(包括外部和内部)并为其提供证明。分区验证对千万门技术是必不可少的,使用与测试基准无关的接口监测器,这样当RTL模块复用于其它设计中时能一起随意移动。
- 使用结构覆盖率标准对黑盒测试组件进行分级,该标准可以测量内部设计结构与接口最远端是否已生效(例如对于一个先入先出队列来讲“满”和“空”就是最远情况)。结构覆盖与缺陷直接相关,遗漏RTL结构最远情况的测试组件一般肯定会漏掉缺陷。
- 直接使用“半形式”(semi-formal)技术执行设计最偏远事件。半形式是一种智能型技术,它使用RTL实现信息创建正确的输入序列,以检测黑盒测试技术无法发现的边远情况和触发器缺陷。
半形式验证将模拟和形式验证联系起来。在模拟技术中用来观测缺陷的检验程序和命题在半形式工具中都成了标杆,运行所有模拟测试组件一般会激发一些检验程序,并暴露出某些缺陷,此时半形式工具即可直接为检验程序制定目标,找出正确的激励方法触发其它缺陷。半形式技术比之任何黑盒模拟方法在产生激励激发检验程序方面要有效得多。
用于模拟和半形式验证的协议监测器是一样的,复杂协议监测器能捕捉到所有复杂接口协议规则。在模拟时,它们可以报告现有模拟测试组件触发的协议冲突,半形式工具则用监测器直接找到其它协议冲突。
此外,用于模拟和半形式验证的输入限制条件也是一样的,半形式工具要避免非法激励,因为非法激励会使检验程序误激发。模拟中检验接口协议合法性的检测器可以简单地再次用在半形式工具中作为限制条件,相同规则在两种情况下都同样正确。
传统的黑盒模拟对于10万门以下的设计能够正常工作,但对大型SoC设计的功能验证却不再适用。白盒方法在设计内部对RTL结构进行配置,为接口增加协议监测器,它对黑盒测试组件进行分级并且使用半形式技术执行设计的边远事件。白盒方法和技术使模拟得到扩展,能可靠地满足设计小组对千万门以上SoC设计功能验证的要求。
作者:Curt Widdoes
首席执行官
O-In Design Automation