您当前的位置:五五电子网电子知识单片机-工控设备综合-其它系统级芯片设计语言和验证语言的发展 正文
系统级芯片设计语言和验证语言的发展

系统级芯片设计语言和验证语言的发展

点击数:7369 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   综合-其它

  1 引言

  在二十多年前中小规模集成电路的设计向大规模和超大规模集成电路过渡时,设计方法经历了由门级向寄存器传输级过渡。当时各种硬件描述语言如DDL,CDL层出不穷,在RTL级的设计描述语言曾经历了“春秋战国”时代,逐渐形成了 VHDL 和 Verilog 称霸的局面。随着微电子技术的发展,集成在一个芯片上的电路的功能日益复杂化。系统芯片的时代已经到来,在RTL级硬件设计的抽象层次上已经无法应付数以百万和千万门系统的设计和验证。据统计,两年来,一次投片成功率已经由50%降低到39%。不能一次成功的设计必须再投入几个月的设计验证时间和数十万美元的费用。这种风险已经变得不可接受了。因此设计验证出现了所谓的“验证危机”。现在基于RTL级的设计和验证方法必须向系统级的设计和验证方法过渡。

  解决系统级设计问题首先要解决系统及功能的描述问题。系统级设计语言的竞争正在如火如荼的展开。需要一种语言能够描述包括嵌入的软件和模拟电路在内的整个系统。而现在的寄存器级的硬件描述语言将成为硬件设计的汇编语言。设计和验证工程师将只在关键的部分利用他们取得较高的性能,而一般情况下将主要利用系统及语言进行设计和验证。

  本文将对当前出现的系统级设计和 验证语言 及其发展趋势进行全面地综述,在第2节和第3节将分别综述系统及设计语言和验证语言的发展情况。第4节论述当前主流的验证方法。

  2 系统级设计语言

  2.1 对系统级设计语言的要求

  系统级设计的特点是:更多更复杂的功能集成和综合、功能模块或IP核,包含存储器、处理器、模拟模块、接口模块和高速、高频输入输出及软件模块,因此要考虑软件和硬件的划分、优化等协同设计和协同验证问题。根据系统级设计的特点,人们普遍认为系统级设计语言应当具有如下的特点:

  1)具有形式化的语义。

  2)支持特别领域规范的集成。

  3)支持描述系统和部件的计算模型的复合。

  4)支持更加抽象的建模。

  5)支持对于限制信息的表示和集成。

  6)从设计规范到设计实现整个设计过程中一致地、连续地探索设计空间。

  7)支持在具体领域和多个交叉领域的预先分析和验证。

  2.2 系统级设计语言的发展

  21世纪初期是系统级设计语言发展变化最迅速的时期。各种系统设计语言 如雨后春笋,已经出现的系统级语言可以分成3类。

  第一类是通过对于经典语言的扩展得到的语言如SystemVerilog[1]。SystemVerilog 在向高层次发展方面,对于原来的Verilog进行了根本性的修改。他混合了Verilog, C/C++和 CoDesign Automation′s SuperLog 给设计者提供了最强的能力。SystemVerilog是对于IEEE 13642001 Verilog的扩展,以便辅助提供产生并验证抽象的系统结构级的模型。在接口方面突出的特点是在高层抽象可以实现模块的连接。类似于C语言的结构,如断言结构支持性质的检验。主要扩展的目的是使得Verilog语言能够支持大规模的设计并达到更高级的抽象。他还借用了C的数据类型 “char”,“int”等。凡是C的编码可以直接用在Verilog模型和验证程序中。这类对传统语言扩展的方法的优点是有利于设计者的平稳过渡,但是主张完全用C语言作为系统级语言的人们怀疑这种“改良”的方法在进行模拟时的效率不能得到满意结果。

  第二类是利用软件领域的语言和方法,如C/C++,Java,UML等等。主张用C/C++作为系统级设计语言的人们认为随着时间的推移,最终将会利用C的自动编译程序和其他自动化的工具来实现从C/C++的模型到芯片的编译。在目前工具不完善的情况下必须进行人工逐步求精的设计。也就是说,目前C/C++要扩展硬件表达成分而不是只在算法级描述。例如 SpeCC(the University of California, Irvine),ardwareC(Stanford University)HandelC(原先是在 Oxford University,现在转移到Embedded Solutions Ltd)SystEMC++(C Level Design Inc)SystEMC(Synopsys Inc)Cynlib(CynApps)等。可以把这些语言分成2类:一类是在标准C语言上进行扩充,以SpecC为代表;另一类是利用C++可扩充性,以SystemC为代表,他提供一组硬件的基本元件,这些元件可以扩充,以便在更高的层次上支持硬件。这2种互补的方法都在4个层次上即算法、模块、按照周期(cycle accurate)和寄存器传输(RTL)级别上支持硬件描述。在SystemC20之前,有些人认为SystemC是侧重于模拟,SpecC是侧重于规范和结构建模,以综合和验证为目标,但是在SystemC20之后,这些说法也不准确了,因为现在的SystemC2.0已经能够支持所有系统级的要求。 SystemC填补了在传统的HDL和基于C/C++的软件开发方法之间的鸿沟。他包含C++类库和一个模拟内核,这个内核用来产生行为级和寄存器级的模型。有领先的EDA厂家管理和支持,并与商用的综合工具相结合。他支持通用的软件和硬件开发环境。

www.55dianzi.com

   我们认为,和C相比,C++显然是比较好的选择。因为C++是可以扩展的,也因为硬件中的并发概念易于用类库表示,C++面向对象的本质与HDL的分层次特性可以很好地对应。

  人们也在讨论Java是否可以作为系统及语言和高级硬件描述语言的问题[2]。例如LavaLogIC先提出JHDL,他把Java语言的描述转换成为综合的HDL程序,再用所提供的工具变成门级的描述。拥护Java作为系统级描述语言的人认为Java可以提高描述和运行效率,与现在的HDL相比,能够以很简短的程序表达高层的概念。C/C++具有内在的表达并发能力,相反Java可以用线程显式的表达并发。但是Java不支持模板和操作符过载,因此可能产生大量的过程调用。

  第三类是全新的系统级语言。例如Rosetta,用这一个语言,用户可以描述几乎任何工程领域的行为和限制,包括模拟、数字、软件、微流体和机械等。但是并不能代替和实现 Verilog , VHDL 和C等。他由美国DARPA开发,目的是给设计者提供描述大型的、复杂的计算系统,特别是混合多种技术的系统的能力,他可以在高层次上定义、捕获和验证系统的限制条件和需求条件及其部件。他提供定义和结合多个领域的语义模型,进行建模和分析。他的语义是形式化的、可以扩展的,并且能适应新系统的要求。

  Rosetta 的设计方法学是基于一种多面体的小平面(facet)的概念。facet是部件或系统的模型,他提供所关心领域具体的信息。为了支持异构系统的设计,每个小平面提供具体领域的词汇和语义。他用来从不同角度定义系统的视图,然后把不同的小平面组合起来构成部件的模型。部件的模型再组合成系统的模型。

  Rosetta的 facets语法对于现有的硬件描述语言的用户来说,应当是容易熟悉的。他的语法和VHDL几乎是一样的。该语言设计的主要难点是要把多个领域的信息统一在一种设计活动中。对于不同的领域,例如模拟、数字、机械、和光部件,Rosetta 提供了定义和理解系统的机制。不仅如此,他还提供对于扩展新领域进行建模的技术,这对于将来语言的发展非常重要。不能正确理解不同领域的交互作用经常是引起系统失败的根源。因此Rosetta提供显式的交互建模和评价这些交互的方法。

  3 系统级 验证语言

  3.1 基于事务的验证和基于断言的验证

  验证语言的提出需要说明基于事务的验证和基于断言的验证。解决所谓系统芯片的“验证危机”,策略之一是基于事务处理的验证(TBV),事务是概念上单一的数据或控制的转移,这种转移有事务的开始时间,结束时间和所有相关的信息确定,这些信息和事务一起存储,作为事务的属性。事务处理可以是简单的存储器读写,也可以是具有复杂的结构数据报在网络信道中的传送。把验证的层次从信号层次提高到事务处理层次,让测试具有更直观的方式,有利于测试产生、纠错过程和功能覆盖的度量。设计系统结构不是想象使能信号和地址总线如何工作,而是想象数据如何在系统中流动和存储。TBV就是这种高层次设计过程的自然展开。定性的验证过程包含3个步骤:测试生成、设计查错和功能覆盖分析。每个阶段都要提高到事务处理的抽象层次。可以用Verilog语言的task 来构成事务。这对于基本的测试也许还可以接受,但是当要产生复杂的数据结构、复杂的测试方案,动态的测试生成时,就会产生太多的限制。高级验证语言(HLV)例如近年来开发TestBuilder(C++)、Vera和 E等,就是要解决这些复杂的问题。

  基于断言的验证(ABV)是把形式化方法集成到传统模拟流程中的一种有效的方法。设计团队在RTL设计中插入设计意图(断言)并且进行模拟,然后用形式化技术检查断言,限制条件,也就是合法接口行为的断言,和其他断言同时一同参加模拟。断言检查的结果改进模拟的有效性。即使利用传统的模拟验证,断言也可以大大提高模拟的效率。基于断言的验证要由用户写出断言,断言表示要验证的性质,因此需要性质描述语言。例如逻辑和时序方面的性质。这些也是验证语言要解决的问题。

  3.2 目前的系统级验证语言概况

  IC设计和EDA 界需要一种标准化的具有公开接口的验证方法学,在2000年,Open Verilog International和VHDL International联合,组成了ACCellera组织。其目的就是在系统、半导体和设计工具企业,推动、开发和培育新的国际标准。以便加强以语言为基础的设计自动化进程。面对几个在语法和语义方面都不够完善的形式性质描述语言,Accellera进行了一个选举过程,4个候选的语言是 Motorola的CBV,IBM的 Sugar,Intel的 ForSpec 和Verisity的e 语言。经过讨论,集中到Sugar和 CBV上,在2002年4月选定了IBM的Sugar 2.0[3]。Sugar 2.0的获胜造成了Accellera组织的分裂,包括Cadence在内的多数EDA工具供应商支持Accellera 的决定。另外一部分则转向支持Syopsys的 OpenVera 2.0。作为一种真正的工业标准语言,Sugar 2.0语法和语义很简单明了。基本上是基于线性时态逻辑语言(LTL),他是由基于分支时态逻辑(计算树逻辑CTL)的Sugar1.0演化而来的。其关键思想是利用一种扩展的正则表达式的构件。因此对于形式验证领域来说,理解Sugar是很容易的。

[1] [2]  下一页


本文关键字:暂无联系方式综合-其它单片机-工控设备 - 综合-其它