cuttlefish的个人空间 https://blog.eetop.cn/verification [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【转帖】通过将SystemC和SystemVerilog集成在单个环境中获得事务级建模和高级验证功能

已有 1321 次阅读| 2008-9-25 15:27 |个人分类:SOC验证

尽管业界对SystemCSystemVerilog哪个更适用于系统设计和验证仍有争论,但已经不需要在两个之间作出选择。通过互补的方式对它们高效地加以利用可以促进那些高级验证方法的成功运用。这些高级验证方法通常会采用受限随机测试生成、功能覆盖、声明和事务级建模(TLM)功能。

通过支持面向对象的编程方法,这两种语言都能对更高层的抽象进行建模,而且都包含象随机化这样的验证组件。两者之间也有些区别。例如SystemC完全支持TLM,包括在高层抽象进行描述、记录和事务浏览;而SystemVerilog不完全支持TLM,但它支持声明、功能覆盖和改进的受限随机测试生成功能,因此也具有显著的验证优势。这两种语言在功能上多少有些重叠,因此用这两种语言建立系统时可以做到平滑转换。

可以在多个抽象层实现的高级验证方法和建模技术能够最佳地发挥TLM的优势。事务常用于建模硬件系统,而系统软件的语义很容易被表示为高层事务。这样系统架构师、软件、验证和硬件工程师之间就能直接进行交流。更高层抽象和TLM可以使大量软件被用作测试平台的一部分,并允许在RTL编码完成之前开始测试平台开发。当RTL设计实现时,验证工程师就可以插入将RTL事务转换成信号层事务的事务处理器。

另外,设计领域和学科之间的这种高性能桥梁可以改善公司各个设计与验证团队的所有成员之间的交流和合作。它允许软件工程师和系统架构师与验证和硬件工程师直接分享数据。这种交叉学科交流本身也有助于发现和解决设计过程早期出现的问题,从而进一步提高设计质量和验证的产能。

图1:在多个抽象层工作并使用高级验证方法可以为系统级平台的建立
提供极好的机会,此时验证复杂SoC所需的多学科汇聚要比以前早得多。

标准集成可进一步方便高级验证

设计复杂性意味着验证小组必须能够产生更多冗余度更少的测试,以便更快地覆盖目标性能。最佳的验证解决方案可以帮助工程师利用高级验证技术和方法实现更高的验证产能,例如基于声明的验证、受约束的随机测试、功能覆盖和测试平台自动化。

这些方法已被一些前沿设计公司所采用,其中大多数设计公司开发私有工具来支持这些方法。这些私有工具被证明可以增加验证效率和产能,并能提高设计质量。然而,私有特性也阻碍了这些工具的广泛采纳。通常这些定制语言的集成以及独立内核和专用接口的整合限制被证明是相当困难的。

克服这些障碍的第一步是由公认的标准组织如OSCI、Accellera和IEEE开发出标准的验证语言和库。这些新语言也必须克服其它HDL语言的设计与验证限制,因为这些HDL语言缺少对更高层抽象的验证支持。第二步是提供能够全面支持在单个内核和用户接口中集成这些语言的仿真环境。这种语言的集成可以从根本上改变高级验证方法的部署,使之最佳匹配项目需要,而不受语言或工具的限制。

SystemVerilog和SystemC是适合高级设计与验证使用的最重要语言。SystemVerilog和SystemC设计构造允许在更高抽象层进行建模,从而有利于下一代设计的创建与验证。

SystemVerilog是许多现成的专有和标准验证与设计语言积累的结果,因此它能与现有的HDL环境无缝集成。SystemVerilog可以加快高级功能验证的构建,实现缺陷检测的自动化和设计的完全覆盖,包括难以预料的偏僻案例。它能改善建模质量,使之具有更好的可视性和更少的缺陷,并且能够通过支持受限随机测试、自动化、声明、覆盖和测试平台复用改善测试平台架构的质量。

SystemC能让工程师在更高抽象层捕获设计,并使用包括软件在内的高层测试策略执行验证。系统级测试平台也可以在RTL级复用,实现验证产能的提高。SystemC包括一个功能强大的并发建模层,非常方便创建无时序、并发的系统级架构模型。因为SystemC是C++的扩展,因此它有许多固有属性,如类、模板和多种继承性,这些属性自己就能建立适合功能验证的可复用事务级组件。用于开发软件的同一可执行平台常被用于整个系统的验证。这种验证在项目初期就会发生,而事务级模型可以成为整个系统非常好的参考。

一个全面集成的多语言仿真环境允许用SystemVerilog或SystemC编写的高级测试平台和设计组件使用任何设计语言。混合和匹配多个语言的能力可以使设计人员在多个抽象层上共享数据,并在单次仿真中集成多个运算模型。不管设计人员处于哪个设计阶段,工程师都可以使用事务器接口从不同抽象层连接即插即用模型,从而满足不同层的需求。这样不仅扩展了通过接口的数据类型,还能对包括VHDL在内的所有标准语言之间的测试平台复用提供支持,从而推进高级验证方法的广泛采用。

进一步的功能验证

高效验证需要两个关键要素,而这两个要素都可以由SystemVerilog和SystemC保证。首先,验证环境必须能够尽可能自动地检测缺陷,在这样的环境中象声明、自动化响应检查器和记分板等功能都会派上用场。其次,验证环境必须能够产生能引起缺陷的正确激励信号。激励可以通过定向测试或受限随机技术生成,这些技术能以相对较少的代码遍历各种情况。

SystemVerilog和SystemCSCV允许用户在约束方面描述激励情景,规定驱动设计的信号或事务所需的逻辑值。这样仿真器可以为激励产生随机值,并具有能确保所生成的情景有效的约束条件。新的情景可以通过简单地重新运行具有不同随机种子的仿真器形成,从而产生不同但等同有效的激励,因此可以用来检查新的功能。

使用随机化和约束条件可以在验证产能方面产生许多实质性的改善。其它语言只能通过使用面向对象或面向方式的复杂编程技术才能提供这些性能。虽然SystemVerilog在其面向对象的架构中包括随机化和约束条件,但它也能提供多种方式来部署这些性能,而且不需要学习面向对象的编程技术,因此这些先进技术得到了广泛使用。

一旦测试平台中整合了随机化功能,就需要通过功能覆盖判断实际上可能会发生哪一种情景。SystemVerilog功能覆盖将跟踪设计的哪个功能会被运用,因此不会在同一功能上浪费时间。

桥接设计和小组层次

因为考虑验证过程的前后总是有所帮助,因此高效的方法是把测试平台的重点放在设计该做什么,而不要放在如何做设计上。最便利的做事方式是在事务级编写测试平台。提高抽象层次可以增加产能,因为这样可以使高层功能得到验证,并且纠正速度比较低抽象层快。可以通过某种自动方式使用受限随机、声明、形式或其它技术处理细节,也可以在更广泛的设计和验证工程师之间划分细节。

事务是指在受限时间周期内系统中发生的所有活动集合。感兴趣活动在特定时间开始,在一段时间后结束。在特定设计单元中或在两个单元之间发生的所有操作、状态修改、数据移动和运算都是事务。事务级模型用来在高层抽象描述复杂系统,允许设计师在进入完整实现的低层细节之前解决架构问题。在功能验证方面,基于事务的测试平台允许验证工程师在构思设计的层次验证正确操作。

因为事务级模型提供的细节要比Verilog和VHDL RTL模型少得多,因此与在寄存器传输级建模的可执行平台相比,它们在仿真时的运行速度非常快。SystemC事务模型也很快,甚至可以用作软件开发平台,从而支持早期的软件开发和软硬件协同仿真。另外,事务级和SystemC功能模型也具有足够快的速度,可用于系统级架构化建模和分析。

事务浏览功能可使SystemCTLM供从事项目的所有工程师使用,从而进一步提高设计和调试的效率。SystemC和TLM可以为系统架构师和编程人员建立多产的公共平台。事务的可视性可以表明由模型产生和消耗的特殊事务序列以及彼此之间的关系。

SystemC和TLM还能为所有等级的设计层次上的复用提供重要的机会。例如,硬件设计师可以在预先定义的接口上用较低层RTL模型代替高层C模型。通过复用不同抽象层上的测试平台组件可以在多个工程学科之间建立联系路径,增加信息共享,提高效率。

集成语言的价值

将多个先进的编程语言集成在单个环境中可以使硬件设计师选择复用用SystemC编写的测试平台,或选择用SystemVerilog创建的额外验证组件。现在架构师、编程人员和硬件设计师可以充分利用具有SystemVerilog声明、受限随机生成、功能覆盖和测试平台自动化等功能的可复用测试平台组件。

有许多理由要求在同一仿真中整合用不同语言编写的以及在不同抽象层次的模块。IP有许多来源,也有许多种形式。而且在集成过程中,很有可能所有的模块不会同时出现在相同的抽象层次。比如,在自顶向下的流程中,原本所有模块都是事务级模型。在逐步调整的过程中,一些模块会被RTL所替换。

SystemVerilog直接编程接口(DPI)可以在SystemC和SystemVerilog之间提供必要的高性能、易用性链接。有了SystemVerilog DPI后,系统架构师和软件工程师就可以用SystemC做设计,然后直接移动到SystemVerilog域进行验证,并允许他们充分利用受限随机技术、测试平台自动化、声明和功能覆盖等功能。

因为是直接连接,SystemVerilog DPI要比编程语言接口(PLI)等标准应用编程接口(API)更便利更快速。SystemVerilog面向对象的特性也更容易创建可复用测试环境,因为它允许约束和其它方面通过继承进行控制或覆盖。不过对于不准备或不愿意从事面向对象的编程人员而言,在事务级编写测试和约束的能力也能显著增加测试效率。

SystemVerilog DPI开放了一个公共的通信通道,因此允许跨越许多语言和引擎实现测试平台的复用。

统一的验证环境

为了充分发挥这种混合语言环境的先进验证性能,设计小组需要一个基于标准的解决方案,以便他们利用每种语言的长处,包括可应用于多个抽象层的可复用验证组件。

仿真仍然是高级验证方法的核心。仿真器应该从根本上支持SystemVerilog、SystemC、Verilog和VHDL。对单个内核中HDL和高层验证语言的根本性支持可以获得更快的性能和高度集成的调试和分析环境。如果在使用公共图形用户接口的统一内核中支持所有的语言,并且语言的混合是透明的,那么肯定能获得很大的灵活性,语言之间也很容易移植。

仿真器应该将SystemVerilog和SystemC的设计与验证功能集成在统一的环境中,并设定最大化产能的阶段。一个全面的混合语言设计环境允许用SystemVerilog或SystemC编写的高级测试平台与包括Verilg或VHDL在内的任何设计语言一起使用。

这样,架构师和设计师就可以选用他们所专长的任何语言,然后与项目的其他成员一起共享成果。在不同学科之间的这座桥梁可建立用于开放通信线的整体协作过程。结果将形成在线对话,使得许多问题和机会可以在设计开发过程的早期获得讨论澄清,而此时这些问题解决起来会更容易,代价也较低。

高级验证方法和事务级建模的有机结合可以创造出极大的灵活性,显著地提高验证产能和设计质量,同时在系统架构师、软件设计师、硬件设计师和验证工程师之间促成更好的交流。使用高层SystemC和事务级模型可以加速设计创建,推进架构化选择的开发。SystemVerilog可以通过声明和功能覆盖等高级验证技术加快系统有效性的确认。

作者:Joe Rodriguez, Mentor Graphics公司


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 2

    获赞
  • 7

    评论
  • 326

    访问数

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-6-15 17:04 , Processed in 0.021126 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部