基于ESL并采用System C和System Verilog的设计流程

  • 格式:pdf
  • 大小:420.48 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

具备借助C++大量的专家,采用这一语言方便地来加快工作。

关于SystemC的典型使用情况,根据最近有关SystemC的出版物以及各项调查中得知,例

如SystemC用户中的绝大多数正使用这种语言来执行建模(68%)、体系架构开发(68%)、事务处理级建模(56%)和硬件/软件协同仿真(56%)。

SystemC最初在OSCI(开放SystemC发起组织)中发展而来,它的语言参考手册(LRM)最近已经获批成为IEEE 1666标准(见参考文献[1])。

SystemVerilog

SystemVerilog是一种相当新的语言,它建立在Verilog语言的基础上,并新近成为下一代硬件设计和验证的语言。SystemVerilog结合了来自

Verilog、VHDL、C++的概念,还有验证平台语言和断言语言,也就是说,它将硬件描述语言(HDL)与现代的高层级验证语言(HVL)结合了起来。由于拥有这样的概念以及它

与Verilog的向上兼容性,使其对于进行当今高度复杂的设计验证的验证工程师具有相当大的吸引力。能够采用 SystemVerilog进行验证的另一项成功因素是方法学手册和架构的更早可用性,例如在SystemVerilog的验证方法手册(VMM)(见参考文献[2])中所描述的验证平台方法(这一方法是由ARM和Synopsys合作开发的)。

上述这些特点,以及SystemVerilog是一项得到了所有主要EDA供应商支持的IEEE标准的事实,使得SystemVerilog实质上成为了硬件设计和验证的首选语言。

SystemC与SystemVerilog特点比较

就SystemC和SystemVerilog这两种语言而言, SystemC扩展了C++在硬件方面的适用范围,

而SystemVerilog扩展了Verilog在基于对象和验证平台方面的适用范围。而这两种语言均支持诸如信号、事件、接口和面向对象的概念,但每一种语言又均拥有自己明确的应用重点:

● SystemC对于体系架构开发编写抽象事务处理级(TL)模型、或执行建模来说最为有效,特别是对于具有很强C++实力的团队和有基于C/C++ IP 集成要求(如处理器仿真器),以及为早期软件开发设计的虚拟原型来说,更是如此。

● SystemVerilog对于RTL、抽象模型和先进的验证平台的开发来说最有效率,因为它具备了执行这方面任务所需的基础架构,例如受限制随机激励生成、功能覆盖或断言。

● SystemVerilog显然是描述最终的RTL设计本身的首选语言,不仅在于其描述真实硬件和断言的能力,还在于对工具支持方面的考虑。

这并不意味着每种语言不可以用在不同的应用中。实际上,SystemC可以用于验证平台和描

述RTL结构,而SystemVerilog也可以用于编写高层事务处理级模型。但是,每一种语言都用于自己的重点应用时,它们可以达到最佳的效率。这点对于复杂的项目特别适用,在这种项目中,不同的任务分属于不同的组,通常有不同的技能要求。注重实效的解决方案以及符合设计团队的多种技术要求的方法是同时使用SystemC和SystemVerilog来开发和验证当今设计流程需要的虚拟原型的事务处理级模型。

集成的仿真环境

将SystemC和SystemVerilog集成在同一个解决方案中,归根结底是需要提供混

合SystemC和SystemVerilog的仿真和调试环境。这项集成的核心在于能够直接

从SystemVerilog任务中调用SystemC成员的能力,反之亦然,可以从SystemC成员中直接调用SystemVerilog任务。很明显,这样就要求在SystemC和SystemVerilog的时间概念之间达到同步。

为了建立SystemC和SystemVerilog的高效集成解决方案,让诸如信号和事务处理这样的基层概念在语言设计中,尽管已经在各自的语言中进行了各自方面的优化,在语义上又能够跨越语言分界实现有效的映射。实际上,SystemC和SystemVerilog的标准化组织,OSCI和 Accellera,已经认识到在这两种语言之间建立有效接口连接机制的需求。

SystemC和SystemVerilog集成的核心支持了混合层级结合的建模,而有能力创建部分处于事务处理级和部分处于具体硬件级的仿真模型。因此,集成让SystemC和SystemVerilog能够在不同的抽象层级上进行通讯。

一个典型的应用实例是将一个SystemVerilog RTL模块集成到整个系统的一个SystemC模型中,例如,为了实现早期集成检查。由于SystemC典型情况下应用在事务处理级,就有必要使用一个作为抽象层级之间桥梁的适配器(图3)。

这些适配器的目的在于将事务处理转换成信号操作,而反之亦然。这样,就可以让设计的一部分在事务处理层次上进行仿真,而另一些部分在具体硬件层级上进行仿真。采用这种方法,设计人员拥有对于仿真具体层级的完全控制。

这些适配器可以用SystemC或以SystemVerilog(图3)来编写。使用一项SystemC适配器是相当直接的方式,并且以将 SystemC信号映射到SystemVerilog信号为基础,反之亦然。而

以SystemVerilog来缩写转换器时,典型情况下能够提供更高的性能,但要求

在SystemC与SystemVerilog之间建立事务处理级接口。

SystemC与SystemVerilog之间的事务处理级接口

在System

C中,将通讯与功能区隔开来的目的导致了接口概念的形成。在SystemVerilog中,与接口类似的概念也进行了设计。虽然 SystemVerilog接口和SystemC接口并不完全一致,它们在语言上具有足够的匹配度,能够提供这两种语言之间的有效事务处理级连接。 SystemVerilog接口是一种能够将信号捆绑在一起的结构,并且具有与SystemC接口完全一样的接口方法。通过使用SystemVerilog基于DPI的服务层,验证引擎可以直接将SystemC接口映射在SystemVerilog接口上,从而可以从 SystemVerilog验证平台中直接调用SystemC事务处理级模型。

例1所示为在参考文献[3]中所述的以SystemC编写的simple_bus的模块接口部分。它描述了接口方法burst_read。而 simple_bus的整个代码可以在任何SystemC 2.x版本的安装版本中找到。但是,simple_bus是如何实现此接口方法的,例如,使用了什么样的总线带宽或使用了哪一类型的仲裁,对于该接口方法的调用者来说都是不可见的,因此,可以在体系结构开发中很方便地进行改变。