“The Seach for the perfect language”是篇相当不错的文章。
由EDN的技术编辑Gabe Moretti撰写,并于2004年2月5日EDN的网站上。2004年8月26日,EDN China翻译了这篇文章,题为“寻找完美的建模语言”。
好久前就看过这篇文章,当我重读这篇文章时,欣喜地发现又有不少新的领悟,并被一些原来不曾注意的词句所吸引。这或许就是一篇好的文章所应具有特质吧!
我所作的只是在EDN China原先翻译稿上对译文重新做了修订,却也花了我整整一个下午加上晚上数个小时!于是想还是放在网上供大家阅读。或许只有电子工程师才对这里面的内容感兴趣,抑或只有一小部分人会细究其中的内容。但只要有人能从中获益,我们所作的些许辛劳也就值得了^_^
最后说明一句:文章的版权理应归EDN和EDN China所有,转载请注明原始出处:
(英文原文出处)http://www.edn.com/article/CA376625.html
(中文译文)http://www.ednchina.com/Article/html//2004-8/AtcShow2005127165544.3.htm
寻找完美的建模语言
电子行业正在争先恐后地寻找与当前开发方法相结合的系统级设计解决方案
Gabe Moretti,EDN技术编辑 2004-02-05
2004-08-26
要点
● 电子系统级设计的建模语言功能太弱。
● SystemC、SystemVerilog 和 Verilog 2005 具有很多共同的功能
● 这些工作组希望把 SystemVerilog 和 Verilog 2005 合并成一种语言
● 有一个工作组还在给 VHDL 增加多种功能。
自从电子行业诞生以来,制造能力一直是促进人们开发功能更强的新EDA工具的推动力。目前,我们已经到达了要对电子行业重新定义的技术转折点。使用最新的 IC 制造技术不再是多数设计师的主要目标。为了具有竞争力,今天的产品必须提供复杂的功能。在特征尺寸 130 纳米和130纳米以下时发生的寄生现象直接影响着器件的工作能力。普通的设计师没有接受过发现并解决这些问题的培训,因此,开发周期变长,成本变高。比较可取的做法是找到一种方法来避免这些问题,而不是寄希望于布局期间避免或解决这些问题。这就需要仔细而精确的系统级设计,来确保产品好用,并按时上市。
由于设计上的错误,如今开发的大多数 IC 产品至少需要一次返工。一次返工的直接成本平均超过100万美元,而错过市场机会的代价则以数千万美元计,甚至更高。因此,工程师们在选择制造工艺时,会尽可能保守一些,宁愿让别人去探索新工艺技术的隐藏陷阱。他们在项目的开始时会把更多时间用在产品的规划、定义和划分上。不幸的是,可用于此类任务的工具一般都不精确。这些工具都由用于人们沟通的具有非正式语义的语言写成的描述、无法转换为可执行模型的电子数据表和近似而又难以更新或转换成一种可用于产品开发的形式的草图三部分组成。现有一些精确的系统级设计工具,但几乎没有一种工具可与开发流程的其余部分相融合。很容易理解为什么这样的流程容易引发错误,因为工程师必须采用人工的方式做大量复杂的数据转换工作。
发展新型建模语言的动力
在 20 世纪 90 年代末,随着Verilog成为流行的硬件建模语言,设计师们开始发现,该语言的能力太弱,无法进行系统级结构的建模。有一些EDA厂商(大多是新公司),试图找到解决这个问题的办法。当时,多数的困难在于确定硬件实施和软件实施间的折衷决策以及支持一种能够提高硬件工程师和软件开发人员之间沟通质量的设计方法。1999 年 9 月,在大约50家公司的支持下,一些发起人组建了 OSCI(开放式SystemC计划)。它的最初目标是促进系统级知识产权产品的交易以及使用通用的C++建模平台进行软硬件协同设计。选择 C++ 作为基础语言的主要理由是:C 和 C++ 均是芯片体系结构设计师和软件工程师使用的主导语言。
当时,Co-Design Automation公司(现属于Synopsys)考虑到Verilog在硬件设计工程师中的受欢迎度而把它视为开发系统级建模语言的起点。在 1999 设计自动化大会(Design Automation Conference)上,该公司宣布推出一种新语言,即 Superlog。顾名思义,Superlog 是 Verilog 的超集。2002年6月,Accellera 委员会宣布推出一种称为SystemVerilog的新语言的第3版本。Co-Design公司与Accellera委员会在扩展Verilog功能方面进行了合作。Synopsys公司收购了Co-Design公司之后,向Accellera委员会捐赠了Superlog的更多特性。目前,Accellera这一标准指定团体已发布了SystemVerilog的3.1版。
在Verilog于2001年重新标准化之后,Verilog工作组认为:新版本没能满足系统级建模的要求,因此需要为语言指定下一个版本。该工作组在IEEE的赞助下工作,其 PAR(项目授权请求)编号是1364。在过去12个月内,新闻界对SystemC、Verilog和SystemVerilog做了大量报导,使得语言特性和开发状况受到更密切的关注。另外,IEEE也在进行名为VHDL-200X的项目来开发VHDL的新版本,PAR 编号为 1076。(附文《VHDL不需要“系统”绰号》)
遗憾的是,VHDL-200x工作组似乎倾向于开发SystemVerilog的替代品,用于硬件建模。这条途径的问题在于,VHDL永远也不会成为Verilog或SystemVerilog成功的替代品。VHDL所包含的丰富得多的语法和语义使得它为多种系统建模,而不仅限于电子硬件系统。事实上,片上系统、多片或多(电路)板系统将需要硬件、软件和机械系统的同步建模。这个任务最适合 VHDL,该工作组应该沿着这个行动方向。TABLE 1概括了现有的和提议的各种建模语言及它们突出的特性。
SystemC 语言
OSCI已经确定了指导SystemC开发的五项要求。根据这些要求,SystemC必须支持用于硬件实现以及软件时间的系统功能的高层描述,允许系统设计师尽可能晚地进行软硬件划分,提供从系统描述到软件实现的途径,提供从系统描述到硬件实现的途径,并提供最先进系统复杂性的管理机制。
SystemC是带有新的类库的C++。它的主要优点是成熟和公开。因为设计师已在包括实时操作系统开发在内的多种多样的应用中使用 C++,从而证明它是一种健壮的语言。它的公开性使它可以相当便宜,但 EDA 厂商仍然可以通过为大量潜在客户提供专有工具来获利。由于C++是一种软件开发工具,所以它的语义不支持硬件行为建模。OSCI通过利用C++可以通过定义类来扩展语言的特性解决了这个问题。在定义一个类别时,工程师们可以规定它的语法和运行时语义。
你可以用新的定义来重载原有的定义。“重载”意为在语言的作用域内重新定义规则――本例中就是重新定义的SystemC类库。当工程师使用该库中定义的变量和原语时,新规则生效;当你使用别处定义的变量和原语时,原始的C++规则生效。当你定义新的运行时语义时,就会使编译器生成新代码,供某个理解C++编译器产生的二进制串的程序执行。然后,类用库定义中提供的额外信息扩展C++的运行时行为,你就可以开发SystemC仿真器了。OSCI需要在C++上增加三个基本概念:时间概念、并发概念和硬件数据类型概念。
软件编程语言不需要理解时间,这是因为执行程序的硬件保证了执行时序。不过,如果要对硬件建模,你就必须对延时和执行次序建模。你必须能够告诉仿真器,下一步需要执行哪个硬件模型,信号从一个硬件原语传输到另一个要花多少时间。虽然软件编程语言支持并行执行概念,但它们不理解硬件并发。并行执行指的是松散联系的硬件系统可独立执行两个或更多个指令流。使用信号量原语一般可使这些执行同步。原语起着监督预期算法正确运行的全局状态机的作用。
硬件并发性的意思是,一旦你接通电源,所有硬件都同时工作。因此,仿真器必须能在一台处理天生非并发的指令序列的计算机上执行时模拟并发行为。C++原本的数据类型不足以对硬件建模。例如,不存在能用来描述三态逻辑值的数据类型。SystemC为C++增加了一个四值逻辑系统,从而能够进行数字逻辑建模。SystemC目前它还不支持数字逻辑和模拟逻辑之间的交互,也不支持对模拟模块的结构检验。该语言的最新版本是SystemC Version 2.0.1。
SystemVerilog 语言
SystemVerilog是为扩展Verilog 1995建模能力所做工作的成果,使之与VHDL-1993相当,并在某些情况下超越VHDL-1993。支持开发工作的Accellera面临的基本问题是避免 VHDL的主要缺点:冗长和复杂。既要为一种语言增加功能,又要不使其语法,更为重要的是不使其语义变得更复杂,实际上是不可能做到的。与VHDL相比,SystemVerilog的优势在于市场需求。VHDL超前于它所处的时代,电子设计师所使用的仅是它庞大功能的一小部分。因此,该语言显得很复杂,而且由于要做的更多的处理,仿真器执行速度就比Verilog的仿真器来得慢。对于EDA厂商而言,令人遗憾的是,美国空军坚持要求他们的产品支持该语言的全部功能以符合美国国防部合同的要求,从而束缚了EDA厂商的手脚。设计师是否会愿意应付一种复杂的语言和较慢的执行速度,以便得到更强大的行为建模和验证能力带来的好处,还有待观察。
SystemVerilog的目标是提高大量逻辑门数、基于VC(虚拟芯核)、总线密集的芯片的设计的效率。它主要用于芯片实现与验证流程。3.1版本实现了Verilog2001的四项主要扩展。该语言提供 DPI(直接编程接口)以支持事务建模,使工程师能够在设计模型中包含 C/C++/SystemC功能。这种功能允许在SystemVerilog块和SystemC块之间进行协同仿真。
一组功能扩展的目标是提高建模的方便性。在接口级事务建模的能力简化了总线密集设计的开发;端口链接的两端允许任何数据类型简化了建模工作;扩展的数据类型支持使用类似C的语言;把各个模块局部地嵌套到各自的父模块增强了对虚拟芯核的保护。当然,放宽端口连接规则会增加产生设计错误的可能性。易用性和正确性间折衷或许永远不应该偏向易用性。设计工程师需要一次正确的建模,而验证工程师不得不花上数小时乃至数天来确定两个不同类型的端口互联不能工作的原因所在。
有一种新的机制支持基于断言的验证,从而使 “面向验证的设计”设计方法变得可行。在争取SystemVerilog市场的宣传活动中,Synopsys公司使“面向验证的设计”成为了营销口号。嵌入的断言可以用来检查由于放宽端口语义而导致的问题,它可从功能和约束两个方面来描述设计意图;你可以在仿真时验证这些断言。IBM 公司 (www.ibm.com) 的形式断言语言PSL(属性规范语言)提供了SystemVerilog使用的断言技术。对面向对象技术的支持改善了测试台和硬件模型的开发和重用。Accellera已经原则上同意把SystemVerilog的下一个版本给Verilog2005工作组使用。新版本预计在2004年6月推出。Accellera同意这样做是希望避免存在两个Verilog2001的超集,从而避免市场上的混淆和不兼容性。然而,由于技术提供比Verilog 工作组预期的晚,这肯定会增加Verilog2005的开发人员的工作量。
Verilog 2005 语言
制定Verilog 1995和Verilog 2001两种标准的IEEE 1364 工作组,负责制定IEEE的Verilog标准。2003年3月,该工作组呼吁各方为更新和扩充该标准而提供技术捐赠,以迎接电子系统设计新的挑战。截止2003年9月,工作组收到了来自4家EDA厂商的覆盖9个课题领域的9项技术捐赠。该委员会的目标是在2005年产生一项新的IEEE标准。对于该工作组而言,糟糕的是,还没有人提供任何SystemVerilog工作成果,尽管Accellera承诺在2004年6月这样做。
Cadence Design Systems公司捐赠了6个领域的技术,而Fintronic、Jeda Technologies和 Verisity三家公司各自捐赠了一个领域的技术。Cadence公司捐赠的技术用于该语言的语法和语义的基本扩展。该公司捐赠了有益于把Verilog扩展到系统级的新数据类型定义,还捐赠了指导人们如何用该语言一致地定义数据类型及其功能的各种规则。为此,该公司提出了一套基本数据类型和复合数据类型、一种适用于用户自定义类型的一般方法和适用于任何类型的动态内存分配方法。有一项技术捐赠提出了一种对Verilog模型源代码的各部分进行加密的方法,用于为第三方供应商的软核提供专门的保护。还有一项捐赠可扩展VPI(Verilog 编程接口)使其可利用PSL来支持扩展的数据类型和断言。
有两项技术捐赠拟用来提高用Verilog编写的模型的调试方便性:一项技术捐赠提供有约束地对测试码模式进行随机化的能力;另一项技术捐赠是一种用于事务记录的VPI,它使工程师能在较高的层次上查看和分析事务。Cadence公司还捐赠了一套指导原则,用以帮助在短期内生产一致性的语言,并使未来的扩展顺畅道路。它旨在向工作组提供一种结构,以使其能够比过去更系统化地运作。
Fintronic公司捐赠了一种支持各Verilog模型单独编译的技术。这种功能能对一个Verilog设计的各个部分单独进行编译。这样,你可以把预先编译的部分与其它Verilog源文件和二进制文件混合,构建并仿真某个设计。这一功能是Cadence公司捐赠的加密技术的一种可选替代方案,但不能直接替代它。Jeda Technologies公司捐赠的技术提议将另一种语言 Jeda-X与Verilog语言结合,以扩展测试台开发和设计调试的能力。被提议的这种语言将为编写模块化和可重用的测试台提供了面向对象编程的支持。它还将支持面向方面的编程、并行编程和基于周期的测试台。最后,它可为行为建模提供增强的列表和数组数据类型,并为多线程执行提供同步原语。
Verisity公司捐赠所拥有的支持测试台和调试的技术,并可作为Jeda-X建案的直接替代品。该公司建议在Verilog中增加两个关键字,即keep和gen。这两个关键字将使设计师能够规定硬规则和软规则,用以把所有值都规范在定义之内,并能在需要的时候精确地生成新的激励。Verisity公司捐赠的另一项技术可扩展该语言,使得设计师能够与验证工程师协作,共同描述功能覆盖点,并确定关键的输入组合和必须测试的内部事件。该公司还捐赠了测试编写程序用的语法,从而能引入keep语句,对在一个或多个测试模块内的数据值的生成施加限制。扩展的关键字使测试编写程序能描述某个地方的合法输入序列的基本规则,并在以后扩展这些规则,以便某项测试侧重于一个目标。
工作组收到捐赠的SystemVerilog 时,将会面临一个难以解决的集成问题,因为工作组已经把很多 SystemVerilog 功能设计到 Verilog 2005 中。此外,这两种语言很相似,但并不相同。要消除这种种差别,需要在工程和管理两方面做出很大努力,以便最终结果是一种语言,而不是出自同一语源的两种方言。
商业化支持
这四种语言的标准制定走的是不同路线。SystemC和SystemVerilog的开发者们把它们作为商业化工作来进行,而且向标准化前进既是工程工作,又是营销工作,以使人们接受这两种语言。Verilog 2005和VHDL-200x沿袭计算机学会 (Computer Society,组成 IEEE 的专业学会之一) 的传统战略,即首先通过工程工作来制定一项标准,然后营销这项标准。结果是,现还没有支持 IEEE 开发的这两种语言的工具。有几家EDA厂商没有走这条途径,而是在各自的VHDL实现方法中提供对PSL的支持。
从历史上看,这一战略在商业上不如另一种战略成功。例如,拿VHDL和Verilog来说,VHDL在商业上遭受的挫折是,在标准化之前,甚至使用该语言一部分的EDA工具都没有,而Verilog即使是在开发阶段,就得到了积极的支持。不过,EDA厂商愿意对IEEE开发过程进行投资,因为这一开发过程能使人们从工程角度洞察一种语言的构建方法,非常有价值,而且还可发现在其它情况下难以发现的客户偏好。
Synopsys公司是SystemC开发工作的最初推动者。最初的语言开发是专有的,但 Synopsys公司很快就沿用了 Cadence 公司开发Verilog的战略。Synopsys组建了一个行业财团,即Open SystemC财团。该财团类似于OVI(开放式 Verilog 国际)财团,后者对Verilog 的成功负责。当一个由一家EDA厂商赞助的财团不利于语言被人们迅速接受这一点变得显而易见时,Open SystemC改组为OSCI。在这个过程中,Synopsys公司放弃了它对该组织的政策和方向的很多控制权,有利于该公司将两个主要竞争对手Cadence公司和 Mentor Graphics公司更广泛地参与进来。SystemC 还没有达到Verilog那样的普及程度,一来是因为市场较小,部分是因为可用的工具尚未成功地弥合系统设计和硬件设计之间的差距。
一份全面罗列SystemC工具的清单可以从OSCI网站获得,但有几家公司值得特别关注,因为它们开发的产品旨在把SystemC的使用和RTL(寄存器传输级)方法联系起来。Cadence公司、EVE (Emulation and Verification Engineering)公司、Mentor公司、Synopsys公司和TNI-Valiosys公司都提供混合语言仿真器,使工程师们能够在同一个设计中使用 SystemC模型以及VHDL模型和Verilog模型。CoWare公司很早就涉足SystemC市场。很多系统公司采用了CoWare公司的ConvergenSC产品,因为这一产品使用普通的基础设施来进行设计与验证
ConvergenSC产品是OSCI免费提供的规范仿真器的第一种可用替代品。正如你所预料的那样,该参考仿真器提供的功能太少,不能作为面向商业应用的有用工具。Forte Design Systems公司在网上提供的免费SystemC指南,可以作为该语言的入门。该公司的 Cynthesizer综合工具使设计师能够不经过从SystemC到Verilog或VHDL的转换,由 SystemC模型生成硬件(参考文献 1)。
许多 EDA 厂商正在开发面向SystemVerilog的支持工具。已宣布的开发工作大多数都为今年6月召开的设计自动化大会带来了一些商业工具。Real Intent公司、Synopsys公司和 0-In公司均已宣布开发形式验证产品的计划;Novas公司、SynaptiCAD公司 和 Synopsys 公司将支持测试台和调试工具;Aldec公司、@HDL公司和Synopsys公司将提供仿真器;Axis Systems公司将通过仿真产品支持SystemVerilog语言。Bluespec公司、Cadence公司 和 Mentor Graphics公司还没有确定各自产品的性质,但你会预料到Cadence公司和Mentor Graphics公司都将至少为SystemVerilog语言提供仿真支持。
虽然Verilog 2005没有得到商业上的支持(截止发稿时),但Fintronic公司、Jeda Technologies公司和 Verisity 公司全都提供了实现其捐赠给工作组的技术的产品。Fintronic公司在其FinSim产品中使用了适合Verilog的单独编译技术,Jeda Technologies公司把 Jeda-X作为测试台开发工具来营销,而Verisity公司开发了供其基于e语言的验证产品用的技术。Cadence 公司也已经在其整个验证产品系列上使用了它捐赠的一些技术。
发表于 @ 2006年08月13日 21:42:00|评论(loading...)|编辑