• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 系统级芯片设计语言和验证语言的发展

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

录入:edatop.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。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厂家管理和支持,并与商用的综合工具相结合。他支持通用的软件和硬件开发环境。

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

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

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

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

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

来源:维库开发网

上一篇:SQLite嵌入式数据库系统的研究与实现
下一篇:SRAM特点及工作原理

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图