以自然语言编写的产品规范的含糊其辞,常常会带来设计缺陷,而这种缺陷直到较晚阶段才会被发现,从而使解决方案变得更加昂贵。
要点
设计复杂性的不断增加需要更好的系统设计工具。
硬件设计师需要重新培训,才能成为熟练的系统设计师。
对于系统设计而言,设计用于开发和验证各种算法的语言是再好不过的了。
工程师们甚至在晶体管发明之前就从事系统级设计,但是,随着设计复杂性的提高,人们更加重视系统级设计。产品规范一般由数百页书面文件组成,这些文件通常含糊其辞,难以解释。The MathWorks公司负责营销、信号处理和通信的总监Ken Karnofsky说:“设计缺陷是在规范阶段引入的,一般要到验证阶段才会被发现。”由于开发者必须在安排得十分紧的进度压力下返工,因此这些缺陷会使开发成本比其必需的正常成本高得多(图1)。
在过去4年里,从事市场研究的Dataquest公司已开始发布关于EDA市场中该公司全球EDA首席分析师Gary Smith所称的电子系统级分市场的报告。该市场的产品旨在使工程师能够以比RTL(寄存器传输级)更高的抽象级来描述电子产品设计,而RTL是逻辑综合被采用以来硬件设计的传统起点。虽然很多EDA公司已经为该市场推出了产品,但收入增长明显不如预期,并且主要技术潮流一直未得到发展。设计复杂性的不断提高和65 纳米半导体制造工艺的采用,使解决系统设计问题变得更加势在必行了。
传统方法
大多数EDA公司处理复杂性问题的方式都是假设 :只要可以利用熟悉的工具,那么设计工程师就会自然地成为系统设计师。因此,该行业正在目睹人们从事三项不同的重要工作,目的是通过提供能在更高的抽象级描述概念的结构,把 RTL 级使用的基于语言的设计扩展到系统级。每项工作都使用一种现有语言作为起点——即 Verilog语言、VHDL语言、C语言。
推广全球标准的Accellera 机构,利用会员公司的贡献扩展了 Verilog 语言,以便创建 SystemVerilog语言——它是 Verilog语言的一个合适的超集,增加了很多行为结构。由于 Verilog 是使用最广泛的 RTL 设计语言,因此该机构断定,对它进行扩展,可以把重新培训工程师的需要减少到最低程度,并为行业节约相当多的费用。
IEEE 出于同样的目的,在计算机协会设计自动化标准委员会 (Computer Society DASC) 内部开始了一项扩展 VHDL的工作。VHDL 基础语言已经提供了Verilog 的大多数附加行为结构,据该委员会说,这可简化向该语言新版本的过渡。然而,这项工作进展缓慢,并有失去市场机会的风险。
另一项基于 C语言(更准确地说是 C++)的重要工作造就了 SystemC,而SystemC由 OSCI (Open SystemC Initiative) 财团推广,并已被许多公司所采用。这种方法的拥护者认为,由于大多数工程师都在大学学过使用 C语言来完成课堂作业,所以基于 C语言 的工具就不需要大量的重新培训。
虽然这三种方法的技术细节各不相同(参考文献 1),但每种方法都有相同的前提:在 RTL 级做设计的工程师也将能在系统级做设计。但是,不论是在EDA行业 还是在其它行业,即使是对产品开发历史的肤浅调查,都会对该假设提出质疑。在电子行业,设计工程师们不参与最初的产品规范,既不制订功能要求,也不确定项目指导方针和市场定位因素。这些任务由营销、财务、系统工程专业人员来承担。这些专业人员一般都不熟悉硬件描述语言。由于没有别的资料可供使用,他们都利用以自然语言和各种图片编写的文件来描述系统。对于他们而言,使用 SystemVerilog 或 VHDL(这两种带有大量硬件实现语义)或 C++语言(带有结构化编程构成),就像使用一种为系统级设计而编写的新语言一样困难。
Cadence公司、Mentor公司和Synopsys公司——三家主要的 EDA 公司——既支持 SystemC ,又支持 SystemVerilog,不过侧重点各不相同。Cadence 公司在 SystemC 推广方面更积极,而 Synopsys 公司更支持 SystemVerilog。Mentor 公司采取中立主义,为这两种语言提供同等支持。在各种会议和媒体上,支持 SystemC 的公司在捍卫自己战略方面更加直率。作为支持这种系统设计方法的最佳例子的小公司有 Celoxica公司、Summit Design公司、CoWare公司。
Celoxica 公司把支持的重点放在用FPGA 器件实现各种设计上,并认为,只要拥有适当工具,任何软件设计师都能编写正确算法的代码,并生成实用硬件。Summit Design 公司认为,设计师仅仅使用 C 和 SystemC 就能完成一个完整的系统设计。Summit 公司的 CEO 兼总裁Emil Girczyc解释说:“算法设计只是 SOC(单片系统)设计小组所面临的设计问题的一部分。使用 Matlab 之后,设计小组必须确定算法的最佳实现方法。采用程序建模语言,而不是Matlab能对性能、功率、体系结构进行最佳的折衷。”另外,他认为,设计小组还必须设计各种应用系统中的控制器占主导地位的部分,并集成 IP(知识产权)模型。他说:“这是 C 和 SystemC 发挥重要作用的地方,也是它们作为首选语言将代替 Verilog 和 VHDL 的地方。”
大约在15 个月以前,CoWare 公司获得了新动力,当时 Cadence 公司投资于这家公司,并把 SPW 产品的相关权利给予了它,这就为通信系统的系统级开发提供了环境。据SPW 营销总监Johannes Stahl 说:“CoWare 公司用Simulink 的一种直接替代品来满足主流市场的需要,供众多 MatLab 用户进行基于 C 语言的验证。”然而,评论家认为,这种方法过分注重硅芯片。当设计师必须使用一些制造工艺,而这些工艺采用最优方法来产生尺寸小于可见光波长的功能器件时,在硅芯片上形成独特的实用图形就变得很昂贵,而且错误概率明显增加。有时,修复这些错误的成本最终会使设计小组不得不放弃整个项目。使用功能最强大的已知组件来实现 IC,可以缓解这个问题。因此,很多公司正在改用作为专用的采集IP内核的平台。采用这种方法,设计的专有部分,不论是硬件还是软件,就能更好管理,从而不容易出错。
新颖的解决方案
据AccelChip 公司营销及国际销售副总裁 Tom Feist 说,对更高生产效率的需求已产生一组新的 DSL(域专用语言),这些DSL有可能是一种较好的系统级设计方法。他说:“DSL 是以牺牲普遍性来获得对某一特定问题领域适用性的编程语言。体系结构良好的DSL所提供的结构,能简明地代表大型设计对象,配有各种针对特定设计域的可视化工具,并提供与硬件实现工艺和软件实现工艺的链接。”
在过去两年里,在 EDA 界引起最浓厚兴趣的 DSL 就是 The MathWorks 公司的 MatLab(见附文《Matlab 和 Simulink 的演变》)。但是,Matlab 不是严格意义上的 DSL,这是因为工程师和科学家们用它来解决很多应用领域的问题。在 EDA 界,设计师已使用 Matlab 来开发适合于有线通信和无线通信两个领域的各种算法。例如,Accelchip 等公司允许设计师用 Matlab 开发并测试他们算法,并提供在硬件中实现这些算法的工具。
这些年来,业界对如何制定出一份可执行的规范争论不休,并创造了 UML(统一建模语言)等语言来帮助解决这个问题。MathWorks公司 和一些已经在支持 Matlab的EDA公司描述了一种称为“基于模型的设计” 的方法。这种方法用一个系统模型取代书面规范,该系统模型由在不暗示特定实现方法的情况下对所需行为进行描述的算法块组成(图 2)。利用 Matlab 和Simulink,设计小组就能尝试各种体系结构,确保每个版本都能被一致地测试,保证 RTL 代码是根据设计产生的,从而通过避免人工转换步骤来保持一致性。这种方法是系统级设计的最佳选择,这是因为它使设计小组能够验证各种现实要求,从而更有可能按时、按预算实现设计。
Synfora公司的工程副总裁兼首席技术官Vinod Kathail指出:“在提供一种熟悉而又使用方便的环境来迅速创造和探索各种候选算法方面,Matlab具有一些明显的好处。”
除了Mentor公司以外,Synopsys和Cadence两家公司 都为客户提供一种在硬件开发期间使用Matlab的方法。实际上,Synopsys公司自从2000年以来就允许其System Studio产品的客户使用Matlab。但只是在最近,在 Matlab日渐受欢迎的情况下,该公司才提高了它对该语言的公开承诺。Altera公司和Xilinx公司 都为客户提供一些在FPGA开发期间能使用Matlab和Simulink的方法,并在客户想购买这两种工具时将他们推荐给MathWorks公司。