追风者

SystemVerilog已在验证领域立稳脚跟

0
阅读(2487)

简单明了的Verilog硬件描述语言是一种纯粹的为IC设计人员开发的语言,它包含用于生成一个综合到门级所需IC网表的所有构件。但是对今天极度复杂的IC设计而言,它已无法满足验证领域的需求。
几年前,Accellera的SystemVerilog工作组开始寻求在Verilog基础之上创建一种新的设计语言,并通过增加一系列丰富的验证性能对其进行扩展。这种努力在去年12月结出硕果,IEEE批准了SystemVerilog P1800标准。

现在,SystemVerilog已是一个实实在在的IEEE标准,那么,谁在使用它进行IC验证呢?他们又正在如何使用它?为什么需要用它来进行验证?使用SystemVerilog进行验证有多困难或多容易?它又采用了怎样的基础架构以使得它对设计人员有用?

多种便利性融合在一起

将Verilog扩展到现在的IEEE-P1800 SystemVerilog,是出于创建一种真正把设计和验证能力统一起来的设计语言的需要。为此,Accellera的SystemVerilog工作组接受了来自好几家公司的技术捐赠,并将它们添加到已有的Verilog语言中作为扩展。




图1:SystemVerilog是全球增长最快的设计/验证语言,与Synopsys在2005年的SNUG会议上的一项调查结果相符。

的确,设计师们已经接受了SystemVerilog,因为它是到目前为止增长最快的设计/验证语言(图1)。“SystemVerilog显著提高了发表声明的能力,因此你当然可以说,作为一种验证语言,它正获得越来越多的应用。”Gartner Dataquest公司的首席EDA分析师Gary Smith说。

SystemVerilog结合了大量验证的概念,主要包括设计、声明和建立测试基准领域,以前都是独立地对它们进行描述,并且有时候采用专门的语言。尽管采用Verilog时也使用了这些能力,但通常需要采用独立的工具,这些工具必须通过编程语言接口(PLI)和应用编程接口(API)与仿真器一起使用。结果并不合乎要求,而且不能获得足够的性能。

可以将SystemVerilog分为四个关键部分进行分块讨论:设计、声明、测试基准能力和验证范围分析。SystemVerilog丰富的验证能力蕴含了许多成功的验证技术。将它们合起来有望实现一次流片成功(图2)。

SystemVerilog的一个很不错的优点就是,其验证能力可以逐步地得到发挥。设计人员没必要为了利用SystemVerilog所给定的许多特性而一次性地将整个语言都消化吸收。实际上,用户只需要简单地将SystemVerilog的构件添加到他们现有的RTL环境中即可。

“只需通过增加断言或者说学习一个额外的构件,普通的Verilog用户就变成了SystemVerilog用户。”Magma设计自动化公司产品营销主管Yatin Trivedi说。

这样,对于不同的设计团队来说,采用SystemVerilog的进度似乎也有所不同。一部分团队正在先于其他团队对该语言的某些特征进行研究,这很大程度上取决于对已建立的验证方法造成破坏的风险有多大。

 


图2:通过SystemVerilog可以实现几个成功的验证策略,如断言、受限随机测试以及代码覆盖。不过,要注意的是这几种技术的一次流片成功率都低于45%。

SystemVerilog特性之一:声明

“我们认为SystemVerilog市场主要分两块,”Cadence的验证部门营销副总裁Steve Glaser表示,“一个是独立的设计团队,主要对自己的RTL验证负责。这些团队一般没有专门的验证专家,要求采用低风险的验证方法。”

Glaser指出,另一种是大型的、多专家“企业”团队,他们拥有专门的工程专家,这种团队对改变他们已有的验证方法表现得非常谨慎。

最流行的并且最容易被人接受的SystemVerilog特性之一是,它的声明能力。在RTL中使用声明是利用SystemVerilog加强验证的一种快捷且相对简便的方式。

使用SystemVerilog声明子集对用户的验证方法基本上是非破坏性的,声明可以大量散布在设计的RTL中。当在模拟器上运行RTL且一个声明被“点亮”时,这就意味着理论上应该发生某个声明行为而实际没有发生,这样错误就被标记出来。

对于想要使用SystemVerilog声明的用户来说可能存在哪些障碍呢?只有一个,那就是基于声明的验证方法确实需要一些培训。Glaser称,部分用户在为正确地使用声明而努力。

该如何写声明呢?应该使用哪些构件呢?需要写多少声明?如何对声明本身进行除错呢?以及该如何利用它们来提供最佳的功能覆盖呢?

虽然存在这些问题,但部分设计师还是喜欢声明,因为他们要求先期投资不太高。例如,意法半导体(ST)的许多设计团队都是声明爱好者。不过,ST功能验证组经理Mike Benjamin非常希望Accellera在P1800标准中包含特征规范语言(PSL)声明,而不是SystemVerilog声明(SVA)子集,这是因为ST的验证团队已经广泛应用了PSL。PSL是市场上几种独立的声明语言之一。

“在一定程度上,声明语言不与SystemVerilog捆绑是一件好事。”Benjamin说。然而,他希望所有的仿真器都可以支持PSL和SVA声明。采用声明的一个重要方面和设计人员可能要问的一个问题是,在RTL中使用声明到底对下游设计流程有什么好处。

“传统Verilog用户只是进行简单的面向综合的RTL编码,”Magma的Trivedi说,“他们很少或者没有向验证工程师提供指导。”

未面向验证的RTL设计可能会迫使验证工程师盲目地进行设计除错。所以,他们必须检查设计,以除去比需要的要多许多的错误。但是将声明插入到设计中后,验证团队就可以获得一些非常必要的指导,知道应该寻找什么样的错误。

“SystemVerilog声明可以极大地提高验证工程师的生产率。”Trivedi说。它们用来将验证工程师指引向设计工程师所担心的设计部分。

“借助声明,你可以很快发现很多问题。”Moxon设计公司的创始人Tom Moxon说,这是一家位于俄勒冈州比弗顿的设计咨询公司。Moxon指出,针对ARM的AMBA、PCI总线以及开放内核协议(OCP)等大部分标准接口的一整套声明已经写完并已完成除错。“当你购买Cadence的Incisive验证平台,或者Synopsys的VCS仿真器时,这些验证程序都有声明。”Moxon说,“同样,明导公司(Mentor Graphics)正在开始将0-In.验证程序并入到其Questa仿真器中。”


图3:传输级模型通常用作硬件模块的参考模型,特别对于软件设计人员来说。如今的仿真环境可以利用SystemVerilog的DPI,它可以直接从Verilog调用SystemC或C/C++程序。

达到测试基准

对于拥有许多内部验证专家的大型设计团队,例如那些企业级团队,他们采用SystemVerilog的比例与小型团队不同。首先从测试基准方面可以看出这一点,较大的团队一般开发较大的SoC,往往比小型团队经历更多的失败。

反之,小型的独立设计团队相对来说敢于冒险使用断言,他们很想逐步地将测试基准扩展到SystemVerilog。在他们小心地从直接测试(以声明的形式)转向使用自动测试基准方法时,他们可能需要得到方法指导。

同时,多专家团队内的验证工程师往往害怕使用面向目标的编程技术,因此这种团队面临着一些难题。他们可能对SystemVerilog有效的覆盖驱动、约束、直接随机验证能力更感兴趣。但是,断然采用直接随机测试意味着将面临更多的风险。

“这些大型团队通常是一个企业级实现协会的一部分。”Magma的Yatin Trivedi说,“他们需要这种主动精神。问题是对于大型公司而言,一旦你开始按那个方向前进了,如果它不能完成,也很难再走回头路。”

在一定程度上,SystemVerilog在测试基准自动化领域的出现代表了融合的趋势。

“这种技术出现的时候,市场上基本都是专有的解决方案,包括不同风格的声明语言和自动测试基准。”ARM公司设计技术主管John Goodenough说,“我们看到的是一个细分的市场,因此我们认为SystemVerilog是一种推动收敛的方法。”

SystemVerilog测试基准能力所遇到的障碍与声明的不同。“最大的问题是人们如何处理遗留代码。”明导公司副总裁兼设计验证和测试部门总经理Robert Hum说。

许多设计团队已经开始使用其它的测试基准语言,例如SystemC、Cadence(先前的Verisity)e语言或者Synopsys的Vera。“所以在测试基准方面,SystemVerilog将随着人们利用它开发新的项目而向前发展。不过,由于遗留代码问题,这种发展将是一个缓慢的过程,而不是阶跃式的。”Hum说。

在意法半导体,不同种类的设计和验证环境占据着主要地位,在设计领域Verilog和VHDL正逐步让位于SystemVerilog。Mike Benjamin表示,意法半导体很早就已经将Verisity/Cadence Specman工具用于进行测试基准自动化。尽管如此,目前该公司在开始考虑将SystemVerilog作为一种测试基准语言。

“我相信SystemVerilog将终结Specman,并且可以做得一样好或更好。”Benjamin说,“它们二者具有可比性。但是在意法半导体我们有许多使用Specman e代码的遗留的验证IP,并且我们不能立即将其转换到SystemVerilog。我们也正在使用SystemC在一个非常抽象的层次进行建模,所以我们期待混合的环境。”

明导公司的Robert Hum表示,对Accellera而言Specman e语言以OpenVera形式包含在SystemVerilog中,这是比较相似的。它们的相似之处在于直接随机测试能力。“了解如何进行直接随机测试的人们都会发现转到SystemVerilog相当容易,”Hum说,“只要你理解了直接随机测试,你所需要做的就是转换语法。”

由于包含了OpenVera构件,SystemVerilog具有全部面向对象的编程能力,以及全部的功能覆盖。“SystemVerilog的面向对象的能力有助于实现干净的测试基准。”Benjamin说。不过,他指出,SystemVerilog面向特征的能力较弱,而这恰好是Specman e语言的一个强项。“验证工程师喜欢在一种面向特征的方式下工作,因此存在一些冲突,二者都没有明显胜出。”他说。 
图4:Mentor Graphics的AVM 当在Questa 6.2版验证环境中执行时,允许整个测试基准与DUT通过一个抽象转换层进行连接。

在建立测试基准方面,SystemVerilog还有一个不可小视的竞争对手——SystemC。“随着设计人员向电子系统级(ESL)设计转移,我相信将会在ESL层面创建测试基准。”Gartner Dataquest公司的Gary Smith说,“那意味着SystemC或者e将是优先选用的语言。”

设计顾问Tom Moxon同意Smith的观点。但是Moxon解释说:“先有测试工具,后有测试基准。对于系统级的方法而言,我认为SystemC占主导地位,因为你要考虑硬件/软件接口和事务级模型(TLM)。但是对于时序和芯片级交互,你处在较低层次的环境中,不需要将所有模型都投入使用,这时,SystemVerilog具有更多优势。”

SystemVerilog内建的直接编程接口(DPI)让用户直接调用软件人员开发的C语言模型或算法。“该特性将促成大量代码复用。”Moxon说。DPI也同样允许C语言函数调用SystemVerilog任务或函数,这进一步促进了硬件/软件协同验证(图3)。

对于那些希望最大地受惠于SystemVerilog的验证人员,特别是在测试基准的建立这个环节,学习曲线是非常陡峭的。为方便SystemVerilog的使用,EDA供应商提供了大量的方法学指南。

最早的验证方法指南(VMM)来自Synopsys和ARM,明导公司拥有先进验证方法(AVM),而Cadence提供的是统一验证方法(UVM)。

所有这些指南都有一个共同的目的:向先进验证方法的使用者提供帮助。它们都以“食谱”形式提供结构化的方法,使得用户可以组合出一个解决方案。

但是据用户称,并不是所有的指南都一样。“Synopsys/ARM VMM很好地将建立完善的测试基准所要求的知识结合在一起,”Benjamin说,“但是,在你能写出一个真正优秀的测试基准之前,你起码要阅读500页的指南。”

对Benjamin而言,明导公司的AVM在方法学上起的重要作用少一些。AVM具有面向对象的代码风格,它因包含了用SystemC和SystemVerilog编写的基础类库、实用程序以及实现案例的源代码而著名。AVM代码和文档在Apache 2.0开发源代码授权下是免费的。

当然,手册(和语言)并不单独产生方法学。为了使它们对设计人员有用,验证环境必须支持SystemVerilog。

Cadence、 Mentor和Synopsys均提供非常广泛的SystemVerilog支持。Cadence的Incisive验证平台通过其称作“Plan To Closure(从规划到实现)”的方法学来得到增强,并被基于互联网的支持系统所支持。

Mentor的6.2版Questa功能验证平台支持所有AVM关键组件,包括SystemVerilog和SystemC的面向对象和受限随机能力、Open SystemC Initiative的TLM标准功能,以及SystemVerilog和PSL的功能覆盖能力。

Questa支持AVM的分层模块化结构,这种结构有利于用户快速将组件构建成可复用的测试基准(图4)。该结构的所有智能蕴含在一个测试控制器中,这个控制器直接与测试激励、一个覆盖引擎以及一个提供覆盖功能的记分板连接。通常,RTL中的待测器件(DUT)通过一个抽象变换层与测试基准连接。

“另一种说法是TLM,”明导公司的Robert Hum说,“在DUT的边缘,如果你愿意,你可以得到1和0,或管脚摆动。在转换层的另一端,你可以有任意的抽象层。”

因此,软件工程师可以见到程序调用和其它非时序的视图,而硬件设计师可以看到具有所需时序信息的更低级别的抽象层。测试激励从未直接发送到DUT,而是通过变换层,这没有增加仿真的开销。Hum宣称:“我们发现测试基准运行得更快了,是因为这种方法净化了测试基准代码。”

Questa 6.2在第二季度发货。起始价格是28,000美元。

Synopsys声称对SystemVerilog提供完整的设计和验证支持,这种支持的至关重要的一部分是最近公布的SystemVerilog验证IP库。Synopsys增强了VCS仿真器,以支持使用IEEE-P1800 SystemVerilog创建测试基准。

“在SystemVerilog环境中使用现有的验证IP器件时,最大的优势之一是可以在受限随机激励方法中操作,并且也具备功能覆盖,”Synopsys公司的Steve Smith说,“这需要对支持验证IP的VCS仿真器进行增强。”

由于VCS和验证IP的改进,那些使用SystemVerilog建立测试基准的设计人员将可以使用Synopsys的一系列DesignWare验证IP。目前的DesignWare客户可以在不增加成本的情况下,通过从Synopsys公司网站申请SystemVerilog版本来获得其IP的SystemVerilog功能性。