新闻中心

EEPW首页>嵌入式系统>设计应用> 如何选择正确的芯片验证方法

如何选择正确的芯片验证方法

作者: 时间:2016-12-02 来源:网络 收藏


4 影响验证技术的趋势和力量

4.1 技术视角

设计错误可能出现在模块接口处或是在模块内部,它们最终会集成在一起形成芯片。举例而言,那些在模块级没有被发现的缺陷在应用动态仿真时会在子系统或系统级上显露出来。使用静态功能验证,模块开发的每一步都会得到详尽的验证,从而确保子系统/系统质量和可靠性从根本上得到提高。有人认为,使用静态/形式功能验证,能够更快地找到更多的缺陷。

另一方面,使用静态功能验证也存在以下缺陷:

1)现有的工具只能在模块级运行;

2)通常不能处理大型设计(一般只能处理100~150K的门电路);

3)不能处理高度复杂的设计;

4)现有的形式验证工具有时会出现时间无限的问题(这主要是因为它们往往是基于一套探索程序,而不是任一算法)。这意味着形式功能验证在一些情况下可能会比动态仿真花费更长的时间;

5)设计必须被写为可综合的RTL形式。

除了上述技术上的挑战外,基于断言的形式功能验证的两个竞争标准(PSL对SystemVerilog)也带来了额外的问题。目前倾向于将静态功能验证方法用于验证足够成熟以备综合的模块,动态验证(随机和定向)用于严格验证集成前的模块。

目前,动态仿真还将继续主宰功能验证领域,直到形式验证工具提供一种更成熟的方法。

4.2 语言视角

可以观察到这样一个趋势,就是将设计和验证语言结合在一起。这将极大地促进生产率,改进系统可靠性以及提高设计质量,因为使用多种工具和语言引发的不明确和误解问题将得到消除。

在这一结合实现之前,公司要继续依赖现有的高级设计语言(Verilog和VHDL),并选择是使用专有验证语言(Open-VERA、E等),还是过去流行的Verilog和VHDL 。

SystemC与其他高级设计描述语言在设计流程中扮演着重要角色,其中涉及硬/软件折衷以及在硬件上运行软件的设计(如SoC)。另外,它们也可用于架构建模及确认,当可以为应用事务模型的验证使用架构模型组件时,也可以使用 SystemC。

5 选择正确的验证方法的标准

在当前缩短上市时间和迫切要求低成本的环境下,工程师正在设法解决设计复杂性问题。那些在新技术上投入更多研发精力的公司,其研发费用的使用更有效率,产品上市时间更短,公司成长更快,盈利更高。另外,公司必须在其特有需求与核心价值的基础上评估方法和技术。在将新技术引进其工具流程时,它们应当考虑以下问题,并做出适当的权衡。

1)在某个生产线中,公司是市场领先者还是追随者?

2)基础设施、工具和方法是集中式的还是分布式的?

3)新验证技术的评估是针对第一代产品进行的吗?

4)新验证技术对成本和产品上市时间有何直接和间接影响?

5)新的工具能否处理不同的设计能力?

6)工具的易用性如何?

7)可为新的工具提供什么水平的文档和支持?

8)新的工具和方法与公司内部现有的工具和方法之间是否具有互操作性?

9)新工具的投资回报率(ROI)如何?(包括在服务、培训、咨询、计算和人力资源方面的投资)

10)新的工具是否能够支持处于多个不同地理位置的设计?

11)公司需要考虑的问题中,最为重要的问题之一可能是:我们雇用的设计师和验证工程师是否对新的工具抱有成见?(即设计师不愿意学习和接受新的技术)

公司在做出关于工具、语言和方法的决策时可以采用以下介绍的简单权衡方法。

5.1 产品视角

主要从事存储器芯片或存储器密集型(相对于逻辑密集型而言)芯片生产的公司讶SRAM和DRAM公司可能根本不需要进行大量的逻辑验证。这些芯片大多是定制的。虽然这些产品中有些规模会很大,但它们的逻辑复杂性并不高,因而不支持在公司内部配备大量逻辑验证工具的计划。不过,存储器密集型设计在其他方面提出了挑战,例如布线、工艺变化以及功率等。

那些制造纯ASIC芯片,在芯片上不运行任何软件的公司可能无须在硬件或是软件实现上进行权衡或是实施测试以捕获运行于硬件之上的软件。例如,只具有硬件的SERDES芯片所要求的验证和建模方法与同时具有硬件和软件的SoC是不同的。

对于拥有多种产品线的大公司来说,验证方法必须满足各种产品的不同要求。

5.2 系统视角

过去,逻辑芯片供应商不负责对芯片是否满足参考系统的功能和性能要求进行验证,而如今的系统厂商在批量订货之前都要求芯片供应商实施系统参考验证。这就要求芯片公司在一个它们不熟悉的附加抽象级上对芯片进行建模和验证,这需要架构模型、参考模型、复杂应用级的测试以及精细的测试平台配置。面对这些不同类型的挑战,公司有两种选择,一是采用现有的语言、技术和方法,这将耗费大量的时间和精力;另一种就是采用新技术(如VERA、Specman等)。此外,芯片供应商还必须确保所使用的参考模型和验证套件是在一个与客户的相应模型和套件兼容的环境中完成的,例如,应用客户的软件开发套件(SDK)和仿真器也能够进行同样的测试。

5.3 方法学视角

在芯片集成之前,可以将静态功能验证与动态仿真结合起来,在一个高置信度水平上验证模块级的功能。通过确认动态仿真正在持续验证功能空间的主要边角,可以有效地实施系统级验证。

首先执行随机仿真可以在验证的初始阶段发现大量的缺陷,然后对随机模拟加以约束以确定测试空间已经被完全覆盖的做法或许相对容易一些。应考虑在功能覆盖度量上对约束驱动型验证进行细化。功能覆盖率这一术语被用于描述对被覆盖的功能空间进行量化的参数,相反地,代码覆盖率则被用于量化一个给定的测试套件对已实现的设计进行覆盖的程度。定向仿真随后可被用于在验证周期末期覆盖边角测试空间。

断言和属性可在静态功能验证期间起作用(在模块级上),并可在动态仿真环境中被重用(在模块级和系统级上)。如果模块转变为IP,那么断言和属性也是有用的,因为断言将在IP被重用时持续不断地检查其属性。

6 结语

随着时间的推移,具有更小特征尺寸(90nm 和 65nm)的器件将投产。目前,公司正在致力于解决诸如布线、串扰和软错误的设计问题。一旦这些设计瓶颈得到了解决且随着芯片厂商在越来越小的芯片上封装越来越多的逻辑,验证问题的出现就是意料中的事了。新型工具和方法的不断引进提高了设计生产率。提高设计(SystemC和SystemVerilog)和验证(Open-VERA、E 和 SystemC)的抽象化程度以满足日益增长的复杂度要求是不可避免的。目前从SystemVerilog 的推出能够看到设计和验证语言的融合趋势。

验证持续扮演着重要角色,它能够提高产品质量,使硅芯片一次成功,从而间接影响总体的产品时间。SystemC 和建模语言将继续为逻辑密集型产品提供架构验证。通过使用属性、断言以及推出形式验证工具,生产率得到了进一步提高。但目前工程师仍旧依赖并信任动态仿真,因为它能够验证大型和高度复杂的设计。最终的趋势可能是:形式验证占据主要地位,动态仿真仍用于完整性检查。

上一页 1 2 3 下一页

评论


技术专区

关闭