基于ESL并采用System C和System Verilog的设计流程
ESL解决方案的目标在于提供让设计人员能够在一种抽象层次上对芯片进行描述和分析的工具和方法,在这种抽象层次上,设计人员可以对芯片特性进行功能性的描述,而没有必要求助于硬件(RTL)实现的具体细节。
当今,芯片设计需要进行深入的系统级仿真,以确保设计的体系架构合适均衡。在绝大多数情况下,所进行的这些仿真还要求在芯片的仿真模型上运行大量的软件, 以覆盖所需的功能。为了让这些仿真具有合适的执行性能,架构设计正在向电子系统级(ESL)解决方案发展。本文探讨了一种基于SystemC和 SystemVerilog的设计流程如何满足极为复杂的硬/软件系统级芯片(SoC)的设计周期和降低风险的目标。
复杂性催生ESL方法学
为了探讨ESL在设计流程中的作用,我们首先看一下当今的主要设计原则。下面的图1所示是一个十分典型的芯片。目前,这类SoC的一大部分是采用IP 模块进行组装的。这些模块部分来源于以前的设计,其它是从内部IP库获取的,或者是由外部IP提供商所许可使用的。当然,SoC中还包含了需要重新创建以 加入关键性功能的模块。
据普遍预计,对于下一代90纳米和65纳米
设计而言, IP的使用将进一步增加。SoC还将包含多个可编程部件,例如中央处理器(CPU)和数字信号处理器(DSP)。有了这些部件和众多的(甚至更大的)IP 模块,为了SoC设计的成功,在性能、功耗和芯片制造成本之间通过快速组装、仿真和分析各项体系结构方案寻求最佳平衡的能力正在变得越来越关键。
除了硬件设计任务以外,软件设计任务也正在成为SoC设计流程中一个不可或缺的组成部分。传统上,软件设计任务标准情况下只在芯片的硬件原型已经提供 后才执行。例如,在无线领域,这种方式经常导致产品推出时间计划的延迟,原因是“软件尚未完成”。为了解决这个问题,一种“虚拟原型”的概念出现了。虚拟 原型是目标芯片的一种高速(20MHz以上)事务处理级模型,这个模型让软件开发工作在硬件原型完成前数个月前就可以开始了。
新兴的SoC设计流程
图2所描述的设计流程有利于引导SoC开发人员尽力解决这些难题。这一设计流程以ESL流程为起点,包含三项紧密相关的行动——产品规格确定、体系架 构设计以及软件执行平台的开发。这个ESL流程的一项关键要求是它催生了一种硬件和软件并行开发的流程,为需要设计的新逻辑模块提供了详尽的规格,并提供 事务处理级的虚拟原型,而软件开发任务就可以在这一原型上执行。
ESL阶段之后是RTL设计/验证和软件开发任务的并行执行,这样在创建了硬件原型(要求提供RTL)的同时,也能够提供必需的软件。
与此类似,在芯片物理设计完成,代工厂即将交货之时,绝大多数或全部的所需软件均已经准备好并经过验证,从而确保大幅缩短最后的硬件/软件集成阶段。
事务处理级建模——ESL的关键
事务处理级建模提供了用于构建上述虚拟原型的关键技术。系统的事务处理级模型描述了系统各个功能单元之间的抽象操作(事务处理)。典型情况下,这些事务处理是各个功能单元之间交换的整个的数据结构(或对象)上读取/写入或发送/接收操作。
事务处理级模型的仿真速度比RTL模型快出若干个数量级。首先,它不对每一个硬件信号的功能进行建模,而是在抽象数据类型(可能代表了许多单个信号) 上操作的模型,从而实质性地加快了仿真的速度。第二,通过使用抽象数据类型来代表RTL内多时钟周期的数据传输,甚至可以让仿真的速度增加更快。因此,将 这些因素结合起来,TLM模型比同等的RTL模型的运行速度快出100倍至1000倍以上都是常见的,这个速度已经快到足以运行相当大的软件。
当今,在RT上的抽象层次已经十分明确,但TLM尚未达到这样的程度。实际上,适当的TL抽象层次经常取决于应用领域和运行仿真的首要目的。某些应用 要求周期上的精确性,例如对具体的高速缓存器特性的分析。而某些应用甚至可能要求在开发流程中与RTL模型建立部分关联,而其它应用(典型为软件开发任 务)只需要功能上的精确度。
目前,SystemC和SystemVerilog均得到了广泛应用,并由IEEE和其它工业组织进行了标准化,得到了由各家EDA供应商提供的工具的广泛支持。而将SystemC和SystemVerilog组合起来,能够最大范围地解决可能出现的对事务处理级的建模问题以及满足工程师的偏好,并提供一套从ESL至RTL验证的完整解决方案。
SystemC
SystemC是一种灵活的基于对象的结构化建模语言,设计用于对包括TLM在内的多种抽象层级进行建模。SystemC以C++库来实现,其中将并发性结合进传统C++语言框架中。
虽然SystemC语言相对较新,但SystemC的采用具有重要的意义。原因之一是,在SystemC成为标准以前, 许多公司和大学已经在采用以前的各自专有C/C++库在事务处理级上对系统进行建模。这样,SystemC就向这些设计人员提供了一种实现他们的事务处理 级方法学的工作标准方式,并提供了一种更为便捷的途径交换系统级IP和知识。第二个原因是,SystemC使各种(基于C语言的)工具和仿真器相对较为容 易的集成,例如,集成微处理器核心用的指令集仿真器(ISS),并具备借助C++大量的专家,采用这一语言方便地来加快工作。
关于SystemC的典型使用情况,根据最近有关SystemC的出版物以及各项调查中得知,例如SystemC用户中的绝大多数正使用这种语言来执行建模(68%)、体系架构开发(68%)、事务处理级建模(56%)和硬件/软件协同仿真(56%)。
SystemC最初在OSCI(开放SystemC发起组织)中发展而来,它的语言参考手册(LRM)最近已经获批成为IEEE 1666标准(见参考文献[1])。
- 高效率升压转换器是延长电池使用寿命的关键(09-30)
- 赛普拉斯设计首款背面照明、数字输出的CMOS 图像感应器(05-26)
- 基于SystemView的数字频率合成器的设计(10-31)
- SystemVerilog设计语言(11-02)
- PCM串行数据流同步时钟提取设计(02-25)
- 一种数模混合SoC设计协同仿真的验证方法(04-09)