Electronics 版 (精华区)
发信人: zjliu (秋天的萝卜), 信区: Electronics
标 题: 在设计过程早期发现并解决问题
发信站: 哈工大紫丁香 (Wed Apr 14 20:36:54 2004), 站内信件
作者:Gabe Moretti,EDN技术编辑
在电路和系统设计中,需要昂贵的验证周期这一点证明电子设计师和 EDA 供应商也都
是不免要犯错的,所以最好使用能避免大多数错误的工具和方法。
要 点
● 制造能力与工程生产率之间的差距继续在加大。
● 现在不存在标准的验证方法。
● 形式证明可减小设计师对功能验证的依赖性。
● 由于深亚微米加工存在许多电子物理学问题,电路验证的重要性正在增加。
设计验证需要每个设计小组花费大量的时间和资源。设计验证费用与设计的规模和设
计
所涉及学科的多样性成正比。要求软硬件协同设计或对于使用数字和模拟两种技术的设计
,
验证起来最为复杂。工艺技术的发展使工程师可以在外形尺寸递减的情况下使用更多的门
电
路。如今,一项
普通的设计就要使用几百万个门,许多设计则使用几千万个门;最先进的工艺不久将在一
块
集成电路上制作 1 亿个门。
验证技术的发展落后于半导体制造能力,这是产生设计差距的重大因素。但这种困难
并
非刚刚出现。在将产品交付生产,并提供一套足够而又高效的测试程序之前验证一项设计
的
正确无误,会遇到种种问题,这些问题至少已经存在35
年了。制造能力与设计验证之间的差距逐步在扩大,因而,验证费用也随着设计复杂度的
提
高而逐步上升。设计验证的目的是保证设计正确无误,但按照设计所处的不同开发阶段,
这
一目的也具有不同的意义。正确无误就是指符合规范、设计规则、工业标准以及企业设计
惯
例。正确无误也
意味着两种实现方法在不同抽象等级如 RTL(寄存器传送级)和门级上的等效性。
设计小组还必须保证软硬件接口协议的正确设计与实现。尽管上述所列问题给人印象
深
刻,但只是部分地描述了你必须测试与验证的可能的设计与实现问题。在 2003 年 9 月
8
日举行的 Synopsys 公司用户大会上,Synopsys 公司主席兼首席执行官 Aart de Geus
在主题演说中说,在所有新的 IC 和 ASIC 中,有 61% 需要至少一次反复。在这些器件中
,由于功能逻辑错误引发的问题而出差错的占43%;只有 3%
的故障原因用现在的验证技术无法确认。但是,工程师们没有时间与资源去发现并改正所
有
的设计问题。设计验证对产品开发成本、开发周期以及开发难度的影响是很大的。
残缺的风景
显然,避免问题的发生比解决问题更有效,但很少有设计团队赞同这种观点。例如,
VHDL 比 Verilog 更加健全而又定义更严格。使用 VHDL 的设计师可以自动地避免某些类
型
的错误,而 Verilog 的用户则必须通过验证才能发现这些错误,但是,大多数工程师却选
择
Verilog,因为它更易于学习,仿真速度也快于 VHDL。诚然,较为简单的语言不支持设计
师
开发复杂的设计时所需要的更严格方法。这一局限性就是开发 SystemVerilog 和 Verilo
g
2005 软件的主要原因。
验证工程师不能依赖于一种广为接受的行业标准验证方法。验证工具的范围很宽,从
软
件开发语言,如C语言,到硬件描述语言,如VHDL语言,再到专用测试语言,如 Synopsys
公司的 OpenVera 和 Verisity
公司的“e”语言,不一而足。这一领域处于不断变化之中,工具的不稳定性直接影响着可
反复使用的模块和操作规程的开发。这一问题在做体系结构级的抽取时最为严重,而进行
这
一抽取级时,避免错误或者至少发现并消除错误,对提高利润率大有裨益。
NEC 电子公司技术基础开发部总经理Kazu Yamada认为,验证包括系统验证、逻辑验证
和时序验证三个主要阶段。他坚持认为,在大多数单片系统设计验证中,最关键的领域是
系
统验证。由于 NEC
没能找到一个满意的商业化方案来解决这一问题,因此它开发了自己的高级设计环境,以
便
为其设计师和客户改进系统验证。虽然有些方法,如 NEC 公司的方法,可以缩短设计时间
,降低开发成本,但它们远不是最佳的。他们使用的工具仍然存在问题。许多年来,EDA
供应商的销售部门业已指出,一个客户在开发期内较早地发现并解决问题就可节省一大笔
钱
。遗憾的是,这些阐述并没有说明避免错误的种种好处。实现这一策略的一种方法就是在
最
高级抽取时进行设计验证。这一方法很有效,因为随着设计的不断进展,将引入越来越多
的
细节,从而使验
证问题更大,因此也更难发现和更难解决。
在过去两年里,验证工具供应商之所以把注意力转向工作在规范方面的设计师销售专
业
人员,有两个原因:一是产品设计和开发的初始阶段是一个未开发的市场,二是进入这一
领
域的技术障碍与财务障碍比开发和推出一个后端工具(如一个集成电路布局产品)的要低
。
为了减小使用上
的障碍,许多 EDA 供应商正在将软件编程语言C或它的派生语言如C++或 SystemC,用作电
子产品规范与体系结构设计的描述语言。这些供应商作出这一决定是基于以下事实:C语言
和与之相关的 Unix
操作系统都可以廉价买到,维护费用低,大多数大学都使用它进行编程教学。他们指望大
多
数电子工程师都在一定程度上熟悉 C 语言。
遗憾的是,C语言不具备精确描述一个电子产品的结构和健全性,C 语言的派生语言C
++
更适用于软件开发,但很难掌握和使用。如果轻率地使用C++的功能强大结构,可能会导致
开发人员难以发现而且要花很高代价才能纠正的错误。SystemC
尝试把某些硬件结构引入C++,如时钟周期和并行性,但仍然无法抓住硬件设计的本质。因
此,C++不能帮助设计师,例如,在某一设计部分硬件实现方法和软件实现方法之间做出明
确的抉择。使用 SystemC
成功地按时完成设计验证的工程师小组都由高水平的和有经验的工程师组成。如何让普通
水
平的工程师也能用这一方法还是一个未知数。迄今为止的实验仅仅表明:不管使用什么工
具
,经验都是无法替代的。
现在已有更多适用的语言,如 Esterel 技术公司使用的 Esterel。EDAptive 计算公
司
正在开发基于 Rosetta 语言的工具,而 KeesDA 正在开发基于 B 方法的工具。Esterel、
B
和 Rosetta
都提供定义和规范设计要求与制约因素的健全方法。使用这些工具的工程师发现,设计中
出
现错误较少,而且很容易获得设计正确性的形式证明。据 Real Intent 公司总裁兼首席执
行官 Prakash
Narain说,“抽取与分割处理的范例尚未开发用于功能验证。”他指出:“断言和基于特
性
的规范就是实现抽取与分割处理的最实际的范例,”但是抽取的设计表述则更进一步。
Narain
认为,芯片设计工作是一门精确的艺术,将来会出现什么样的抽取和精确的方法尚不清楚
。
因此,业界仍在努力发现错误——而不是避免错误。
形式证明
设计小组把某一项目的计算机时间大部分用于进行逻辑仿真,以便从功能上验证他们
的
设计。逻辑仿真一直是一种发现设计错误并证明后来的纠正措施是解决问题的最有效方法
。
有两个因素会对逻辑仿真的效率造成负面影响。仿真就是建立逻辑信号在电路中的传播模
型
,由此来模拟实
际电路的功能。由于电路规模的增长,仿真所需时间以及仿真结果数据库的容量也随之增
加
。工程师们必须监控更多的逻辑功能,因此他们使用的测试向量数量也大大增加。
开发测试向量不是一种决定性的技术。一组测试向量的有效性很大程度上取决于验证
工
程师的直觉和创造力。因此,即使在处理复杂程度一般的电路时,你也决不能断定已经测
试
了所有可能的错误来源。为应对这一挑战,验证方法已从手工创建测试演进到由制约因素
驱
动的随机激励生
成技术。受约束的随机验证方法可以揭示出那些手工不可能包含的情况,但由于这种方法
的
随机性,使人们难以判断一个设计是否得到充分验证。
形式验证试图克服功能验证的不足之处。它不需要测试向量,但一种常用的技术,即
半
形式验证,则依赖逻辑仿真来建立形式证明的起始状态。形式验证使用数学分析方法来确
定
电路的状态以及相邻状态之间的关系。这一技术的执行速度高于对电路中所有节点的逻辑
状
态的计算速度。
纯形式验证很难使用,因为它要求工程师以一种适合数学证明的形式把设计表达出来。尽
管
前述的新兴语言可以支持所需的形式,但为大量工程师进行培训和更换工具的费用正在减
缓
它们被接受的进程。因此,形式验证方法往往要求工程师把电路分割成较小的模块,用断
言
或对设计特性进
行定义的方法来引导证明引擎。
许多形式验证方法的厂商都支持基于断言的验证。这种验证能在设计中提供断言和覆
盖
点,从而加大实现覆盖范围,而断言和覆盖点又反过来改进可观测性,为仿真和形式验证
提
供覆盖范围反馈,并使用自动化的形式分析工具来加大验证的覆盖范围。0-In
设计自动化公司的首席设计师Richard Ho指出,仲裁逻辑是适合基于断言的验证方法的一
个
电路实例。他说,你把具有断言或验证 IP(知识产权,如 0-In 的CheckerWare)的这一
“
验证热点”作为目标,然后用完整的形式验证工具对其进行完整的证明。据 Ho
说,这种方法可以提供对仲裁逻辑的全面覆盖,从而免去了数百万个周期的冗长的重复仿
真
过程。
Cadence 公司和 Synopsys 公司都提供兼有功能验证和形式验证两种技术来验证一项
设
计的验证系统。Hybrid RTL
形式验证用形式验证技术来驱动内置的仿真引擎,并证明引擎则不断地执行形式分析,以
验
证设计是否满足某一额定的特性。它提供的是没有假性错误(即由于芯片实际运行时永远
不
会发生的状况所导致的错误)的确定性结果。
形式证明引擎具有其固有的局限性,使大多数形式工具的范围缩小到常常以 RTL 代码
嵌入的实现方法所特有的断言。Jasper
设计自动化公司提供一种块级的纯形式验证产品,它运行在基于断言验证的最高级别(规
范
级),可提供端到端的特性,用以验证一个电路块预期的“黑箱”行为。
发现错误
Mentor Graphics 公司设计验证与测试部首席技术专家Brian
Bailey指出,工程师们仍然没有从根本上找到验证的收敛机制。他们需要有一种方法来判
定
:一项验证任务何时完成;它们是否充分覆盖了设计的重要部分;它们是否能确定没有漏
掉
要求的功能;以及各项测试是否已覆盖了设计的各个方面。为了回答这些问题,工程师们
必
须有能力懂得功
能覆盖范围及其与设计过程之间的关系。Bailey 说,当设计师懂得这些时,他们就能去考
虑完整而又理想的验证工作。在那以前,他们必须做更多的仿真,或者干脆把宝押在出带
上
,然后再排除实际硅电路实现方法的错误。
如今,工程师们用多个 HDL 来描述一个设计并不鲜见,特别是在该设计使用第三方芯
核时。此外,设计小组还会常常使用一种测试基准语言,如“e”或 OpenVera,一种用于
形
式验证的断言语言以及某种形式的 C 语言。一种 IC 或 ASIC
设计的典型工具流程可能使用来自许多家供应商的 30 种工具。其中许多工具都有自己的
调
试环境。结果是:小组中的任何一个工程师都会对某些用户界面感到陌生,从而使小组成
员
间交流复杂化。
当进行逻辑仿真与测试开发时,设计师和验证工程师都会遇到同类型的各自为政问题
。
编写测试所用语言常常与硬件设计所用语言各不相同。许多开发小组散布在世界各地。他
们
使用不同的语言进行开发,而设计时常常只用一种语言把可用的第三方模型集成在一起。
VSI
联盟正着手解决第三方芯核的验证问题;它的一个工作小组刚刚完成了一个用于虚拟元件
的
《质量度量用户指南》。
Mentor Graphics 公司和 Synopsys 公司现在都在提供支持多种模型语言的逻辑仿真
环
境。这两家公司的仿真平台支持混合语言以及混合信号仿真、测试基准和断言。Cadence
公
司的 Incisive 平台具有同样的功能,并提供与硬件仿真和加速紧相关联的整合(图 1)
。
用一个或多个 ASIC 开发印制电路板的工程师们经常需要将设计制作成原型。
Synplicity 公司出售的 Certify,可以使设计师使用 FPGA 器件做出 ASIC 的原型,并将
仿真板天衣无缝地连接到正在开发的印制电路板上。Synopsys 公司已推出的
DFV(可验证设计),是一种把仿真与形式分析结合起来的方法。它利用设计师的意图和知
识来确保组成电路的模块的正确性和完整性。DFV 可以使设计师把设计断言用作规范的一
个
重点,以便获得设计假设、特性和接口制约。使用 DFV
的工程师们还可以采取多级接口设计来确保事务级规范与寄存器级实现之间的一致性。这
一
方法的基本理念是:让设计师能“说出他们的想法”,而不是由于现有 EDA 工具的种种局
限性而迫使他们解释设计意图。
验证软件
由于芯片上可用门电路数量的不断增加,使得在芯片上包含大量的固件成为可能。在
集
成电路上包括固件的做法为市场营销提供了形成产品系列的灵活性,而这种产品系列只使
用
很少的新逻辑设计便可形成新产品。它还可减少所需电子设计的数量,而且从理论上来讲
应
能缩短开发时间
。但这种策略有一个很大的缺点,你可以把它描述为一个“先有鸡还是先有蛋”的问题。
当
设计一个 ASIC
器件时,你必须进行协调,即哪些功能用硬件来实现,哪些功能留给固件开发人员去完成
。
一旦你做出决定,程序员必须有用来调试代码的硬件。而如果开发小组依次开发硬件和固
件
,则开发时间就太长,无法保证进入市场后盈利。依次开发硬件和固件还意味着硬件体系
结
构无法改变,从
而使一个硬件/软件的协调变成一个代价高昂的重新设计过程。
EDA
供应商们开发出各种方法,使开发人员可以并行地进行硬件和固件的开发工作。重要的是
要
认识到硬件/软件的协同开发需要严格遵守开发进度,因为两个开发小组都必须按正确的
时
间把实现方法中的所需部分提供给另一方。开发小组经理必须密切注意开发日程表,并且
在
发生未预见情况
时灵活地重新安排优先项目和分派的工作。可以用于硬件/软件协同开发所用的工具有
ISS(指令集仿真器)、硬件仿真器和加速器、总线功能模型和硬件原型。
Tensilica 供应可配置的和可扩展的微处理器芯核。它还为客户提供工具,其中的
Xtensa Xplorer 是把软件开发工具、处理器优化工具以及多处理器 SOC 体系结构工具集
成
在一个公共设计环境中的ISS。Xplorer 用作驾驶舱,可进行基本设计管理以及Tensilica
处理器配置工具和软件开发工具的调用。它特别适合开发 TIE(Tensilica 指令扩展)指
令
——这是设计师定义的对 Xtensa 处理器的扩展指令,能使某些系统的性能得到最大限度
的
提高。你可以保存处理器与 TIE 配置,对照 C 或 C++ 软件对它们进行剖析,并加以比较
。
ARC 国际公司提供的 MetaWare 工具链,使工程师能用一个 ISS 代替处理器 RTL 模
型
。ARC 公司设计这一工具,为的是在数据包被引入系统,指令序列被执行,系统的交互作
用
被检验后完成系统的硬件和软件检验。
Aptix公司、Axis公司、Mentor Graphics 公司和 Eve 公司销售的仿真器能使设计师
实
现他们正在开发硬件的一个功能图像,具体方法是将等效功能映射到多个 FPGA 器件上。
这
样,软件工程师就有一个开发中的硬件的复制品,供他们用来进行固件开发。Mentor
Graphics公司、Pittsburgh Simulation公司、Quickturn公司(Cadence 的子公司)和
Tharas Systems
公司提供的硬件加速器可把设计的非行为部分编译成加速程序内的硬件原语,从而能大大
提
高逻辑仿真器的处理能力。加速器是价格昂贵的投资类设备项目,所以几乎没有设计小组
认
为其价格是合理的。Mentor Graphics公司和 Cadence
公司建立了一种按使用时间付费的许可证,客户能租用加速器的时间,并用加密的方式通
过
互联网下载设计。
总线功能模型是另一种降低仿真成本、增加吞吐量的方法。开发人员必定愿意周期精
度
和抽取水平换取较短的仿真时间。当你正在验证一个总线协议,或者正在评估是否要在硬
件
或固件中实现一种算法时,这种方法就特别管用。支持 SystemC
的大多数公司都提供这种能力。这样的公司有 Cadence公司、CoWare公司、Mentor
Graphics公司和 Synopsys公司。
电路验证
一旦加工几何尺寸小于可见光波长,IC 设计就变得更加复杂。当加工节点达到 0.25
微米时,业界就到了一个分水岭。在那时之前,逻辑设计师可以对设计功能进行验证,然
后
把一个 GDSII
磁带交给代工厂,并相信加工好的芯片与他们验证的模型具有相同的功能特性。尽管加工
尺
寸为 0.18 微米时问题开始显露出来,但 0.13 微米和 90
纳米才是对设计师的严重挑战。除了补偿漫射误差的掩模校正外,门及互连线的尺寸也成
为
影响电路功能的许多物理效应的来源。德州仪器公司的研究员 Clive Bittlestone 说,一
旦客户交付了 GDSII 磁带,就要花几天时间验证一个 ASIC
设计。制造小组必须进行多种验证:对应电路图的布局验证,为的是确保设计师使用适当
的
几何尺度;IR 压降和电迁移验证,为的是进行功率分析;栅极氧化物和沟道热载流子验证
,用来确保设计师能遵守加工规则。
0.13 微米以下工艺需要复杂的设计规则。代工厂和 EDA 供应商要共同工作 18 个月
之
久,才能确保 EDA 工具符合整套正确的规则,不会产生副作用。这种需要进行的合作是以
综合与布局市场为目标的新 EDA
供应商试图进入市场的主要障碍。新公司必须从技术和财务两方面确信代工厂的可信性和
可
行性,以便建立进入这个市场所需的伙伴关系。深亚微米波长加工规则过于复杂,业界不
久
将需要一种基于加工模型而不是加工规则的新验证方法。同样重要的是要找到一种方式,
用
以对设计师在掩
膜中发现的错误的严重性进行评分,并保证设计师只纠正掩膜有源部分中的那些偏差。
对工作频率大于 700 MHz 的数字电路来说,设计师需要一种混合时序分析法,如
Nassda 公司的
Hanex,以便把传统静态时序分析的详细覆盖范围与纳米信号完整性影响的动态分析结合起
来。在如此小的尺度下,电路工作产生的噪声影响如果不是比不良布局引起的问题更重要
的
话,则也是同等重要的。
有线和无线通信市场的大发展需要开发大量的混合信号集成电路。在这两种情况下,
工
程师们必须使用电路验证技术,以确保其正常的设计功能。模拟仿真器比数字仿真器的处
理
速度慢,因为模拟仿真器使用的求解程序必须处理多得多的变量,并使用更加复杂的方程
。
在整个开发过程
中把一个设计的数字部分和模拟部分分开是不现实的。尽管两位设计师设计系统中的两个
部
件,但他们最终还得把他们的设计整合在一起,然后再证实整个系统的性能。
Mentor Graphics 公司深亚微米部副总裁兼总经理Ju-Hsien
Chern声称:“可行的办法是采用一种混合信号设计的多层次方案。”无疑,人们有能力在
不同抽取级别上对系统进行仿真,这使各公司能在设计完整性和上市时间之间进行折衷。
改
用单接口的公司有可能把各类仿真引擎——从大信号模型仿真,到数字仿真,再到快速
-Spice
和射频仿真——组合成一个环境。这一类工具使用一个网表分级结构,使设计师可以在其
设
计中任何地方把 VHDL、Verilog、VHDL-AMS、Verilog-A、Spice 和
C组合在一起。设计小组可以在一个全集成的环境中,用适当的方法对设计的数字部分和模
拟部分进行分析。随着设计过程前端和后端的复杂性日益增加,验证仍将是 EDA 供应商大
力发展的课题。
--
╔═══════════════════╗
║★★★★★友谊第一 比赛第二★★★★★║
╚═══════════════════╝
※ 来源:.哈工大紫丁香 bbs.hit.edu.cn [FROM: 202.118.229.162]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:204.696毫秒