1 引言
随着微电子技术与计算机技术的日益成熟,电子设计自动化(EDA)技术在电子产品与集成电路(IC)芯片特别是单片集成(SoC)芯片的设计应用中显得越来越重要。EDA技术采用“自上至下”的设计思想,允许设计人员能够从系统功能级或电路功能级进行产品或芯片的设计,有利于产品在系统功能上的综合优化,从而提高了电子设计项目的协作开发效率,降低新产品的研发成本。
近十年来,EDA电路设计技术和工程管理方面的发展主要呈现出两个趋势:
(1)电路的集成水平已经进入了深亚微米的阶段,其复杂程度以每年58%的幅度迅速增加,芯片设计的抽象层次越来越高,而产品的研发时限却不断缩短。
(2)IC芯片的开发过程也日趋复杂。从前期的整体设计、功能划分,到具体的逻辑综合、仿真测试,直至后期的电路封装、排版布线,都需要反复的验证和修改,单靠个人力量无法完成。IC芯片的开发已经实行多人分组协作。
由此可见,如何提高设计的抽象层次,在较短时间内设计出较高性能的芯片,如何改进EDA工程管理,保证芯片在多组协作设计下的兼容性和稳定性,已经成为当前EDA工程中最受关注的问题。
针对这些问题,人们提出了软硬件协同建模设计3的思想,将统一建模语言(UML)与SoC设计流程相结合,产生了新型的SoC设计方法,同时对EDA工程的分组协作采用层次化管理,提高了芯片研发团队的协调合作能力,进一步加快SoC产品的开发速度。本文从建模的思想出发,主要阐述了结合UML建模技术的新型SoC设计流程的原理及其优势,介绍了支持SystemC的UML架构及其应用,最后针对EDA工程的分组协作的管理问题,介绍了一种层次化管理的原理和改进方案。
2 基于UML建模的SoC设计方法
SoC设计的关键在于异类模块之间的协作兼容程度以及这些模块在高抽象层次上的工作能力。常规的SoC设计过程,如图1所示,是从最初的系统的需求描述开始的,然后根据该需求描述,系统被划分成多个功能模块,例如存储器部分,放大器部分等。功能划分的正确性,将在较高层次的功能仿真中得到检验。
图1 常规的SoC设计流程
功能划分之后,系统进入最重要的软硬件分离阶段,分离开的硬件和软件部分有其各自的设计流程。通常,软件部分使用程序语言(如C/C++)编写代码,形成目标文件后即可进行仿真测试。而硬件部分被分离出来之后,需要进一步细化、抽象才能进入寄存器传输级(RTL)的描述阶段。在这个阶段,硬件采用硬件描述语言(如HDL)来描述,然后通过进一步逻辑综合,形成常规元件库或预定义元件库中已有的逻辑单元。这些逻辑单元有固定的封装,再经过版图规划,时钟模拟和自动布线以后,形成最终的物理版图。然而,硬件部分从分离出来到进入RTL级的设计过程缺乏有效的衔接,制约了SoC设计抽象程度的提高。
在这种常规的SoC设计流程中,软硬件的设计包含了一系列的仿真和验证活动:硬件的RTL级描述和软件的目标代码通过运行指令设置仿真器,检验各自ISS(指令设置)的正确性;在逻辑单元的综合过程中不断进行封装验证、时序分析和版图验证;最后生成的物理版图还要与逻辑单元进行一致性校验。但是由于这些验证要在硬件的RTL级描述和软件的目标代码都完成之后才能进行,因此检测出的错误通常是难以修复的。这些错误无疑将影响到芯片在高抽象层次上的工作性能和各模块之间的协作交互能力。
为了改进SoC的设计,人们将抽象建模结合到芯片设计过程中,采用UMI。语言为芯片设计过程进行建模,提出了基于UML的SoC设计方法。他充分利用了UML定义良好、易于表达、支持各种抽象程度的综合的优势,弥补了常规SoC设计方法的上述不足。
在这种新型的SoC设计流程中,如图2所示,UML被用于从需求分析开始的整个芯片开发过程。使用UML为系统建模,能够由简明到详尽地描绘系统的需求、结构、功能以及相应的行为,使开发者对所开发的SoC有准确而且全面的了解,其功能划分的正确性也更易于检验。经过功能划分,硬、软件分离之后,软件部分的建模先由UML的类图、状态图、时序图、活动图等多种方式来描述,再通过代码自动生成系统,得到相应的C/C++目标代码。这比直接编写代码更直观、灵活,易于维护和修改,使设计者能够在较高层次上专注于芯片的整体规划,而不必被低层次的代码实现细节所束缚。
而硬件部分采用SystemC来描述,可以在门级、RTL级和系统级等各个抽象层次上和软件部分一起进行仿真和测试,使开发者能够对尽早地发现错误,在逻辑单元综合之前即可改进电路,及时解决问题,保证了芯片的各个模块在高抽象层上的交互性能,同时也缩小了整个仿真验证的工作量,提高了一次设计的成功率。
图2 结合UML的新型SoC设计流程
这种基于UML的SoC设计方法,使得电路设计的抽象程度从编写代码提高到了系统级建模的层次,优化了SoC的设计流程,提高了设计效率。在2005年召开的“UML for SoC Design Workshop 2005”会议上,意法半导体(ST)就发布了适用于该方法的由芯片的UML模型自动生成SystemC代码的EDA系统,下面具体介绍这种工具的实现架构。
3 支持SystemC的UML架构
UML语言对C/C++,JAVA等编程语言具有很强的支持能力,而SystemC是基于C++语言的软硬件协同设计语言,包含了C++类库和仿真内核。与HDL相比,他不仅能够描述芯片的硬件,还可以描述系统的测试平台,支持抽象层的仿真和测试,具有和C++语言一样良好的扩展性。支持SystemC的UML架构,是在UML2.0版本的基础上,结合了SystemC 2.0的类库定义和表达规则,将原有的UML语义(包括图符、约束关系和标注值)进行一系列的扩展以及功能上的提高,使之与SystemC相对应。他可以看成是为特殊的应用领域(如无线通讯、实时系统、软件测试等)定制的具有特殊功能的UML建模开发框架。
支持SystemC的UML架构总体框架如图3所示。其中,可视化建模区为芯片的整体设计、模块结构和各个模块功能的具体实现提供了功能强大的图形化建模平台。在该平台上,设计人员能够在为芯片建立总体模型,然后借助于丰富的UML模版和图符,对各个功能模块的具体结构、模块之间的相互关系,以及模块内部的成员(包括子模块、成员函数、成员变量等)进行详细的定义和描述。完整的UML模型建立后,通过代码自动生成系统的翻译和转换(这期间可能要进行可扩展标记语言(XML)的解析),最终产生用SystemC描述的目标代码文件。
图3 支持SystemC的UML架构的总体框架图
在整个架构中,UML与SytemC的对应语义、函数知识库是连接UML和SystemC的关键部分,他主要由SystemC核心类库、核心函数库、数据类型库和预定义通道、接口、端口库组成。这些类库中增设了适合为SystemC程序建模的图符和模版,为UML图符和SystemC语言之间提供了密切而直观的对应关系。图4给出了几个常用的SystemC类或方法以及他们在UML中对应的图符或表达形式。
图4 支持SystemC的UML架构新图符定义
根据这些对应关系,UML的结构图(例如类图、包图等)就可以通过表示模块、端口、接口等硬件类的图符来描述这些硬件的结构和层次。而UML的行为图(例如状态图、活动图、时序图等)就可以用表示等待、循环等状态类的图符来描述硬件功能的具体行为和同步情况。这些图能够在高抽象层次描述SystemC过程,并且生成有效而简洁的SystemC代码。
目前,意法半导体已经将这种架构应用到了IEEE802.lla物理层转发及收发电路中。这种结合UML建模的方法在实际芯片设计应用中已经体现出较大优势。采用该UML架构为芯片建模,使SoC设计(特别是硬件部分)的流程更进一步从RTL的抽象上升到系统级抽象。与RTL级的直接描述方法相比,建模使硬件设计更系统化,而且具有软件设计一样的灵活性和IP(知识产权)可复用性。在支持SystemC的UML架构中,功能模块的仿真和检测可以在直观的建模层次上进行,使芯片的错误比在RTL级上更容易被发现和纠正。除此以外,使用UML建模的设计方式更适用于芯片模块在多人协作开发下的统一。由于UML语义是标准化的,而且最后的目标代码由系统自动生成,这就消除了由于设计人员之间编程风格不同而造成的代码的不连贯。
由于支持SystemC的UML架构是目前EDA领域较新的技术,其功能还在不断的扩展和研究中。目前,法国INRIA公司的开发小组发表了利用序列图等表现并行及实时特性的UML扩展标准“MARTE”;比利时Katholieke Universiteit Leuven公司也提出了能够表现SoC硬件性能要求的扩展标准“SysML”;意法半导体则准备进一步实现由SystemC程序到UML的逆向转换功能。这些工作都将进一步扩大UML对SoC的建模能力,使抽象建模在芯片设计中应用更加广泛。
4 层次化的分组协作管理方法
UML建模在SoC设计流程中的应用,有效提高了EDA工程中软硬件的设计效率。然而,现在的EDA工程对复杂系统的设计是通过专业分工(如功能划分、模块设计、仿真测试、版图规划、封装布线等)后形成多个小组共同协作完成的。为了协调多组之间的分工,确保芯片各个模块在多人设计下的兼容性和质量稳定性,人们通常采用层次化的分组协作管理方法进行复杂系统的设计管理。这种层次化的分组协作管理方法主要包括以下4个方面:
(1)工程中芯片开发人员实行分级权限控制。工程管理者可以设置整个工程,查看各小组的进度和IC设计流程各个环节的执行情况,对数据库有全权的读写权利。而小组管理员为组内每个成员进行具体分工,分配资源(如设计工具,数据文件等),负责本组和其他小组之间的进度协调。
(2)多组之间的通信平台采用实时的工程信息管理机制。管理员享有芯片版本和修改方案的发布权,处理由其他成员提交的资源申请,设计方案等,而其他成员可以定制自己的信息处理方式,以便最快地获得工程信息。
(3)采用分层的文件系统存放工程信息(包括芯片设计数据、软硬件资源数据、成员信息等),并且为每个开发小组提供独立的工作区和资源库,使设计人员在自己的工作目录下工作。文件系统里还预定义了一系列功能扩展规则,设计人员可以按照这些规则对自己的工作区进行需求设计,例如修改子目录格式,创建信息发布形式,自定义EDA工具等。
(4)对于资源库,包括芯片的数据信息库、工程人员分工信息库、建模工具库(如rose系列的UML建模软件)、电路设计工具库(如Cadence系列工具软件)、元件信息库等,实行分级共享和管理。允许多个EDA工程连接到某些共同的资源库,而工程内部成员对资源库的连接范围和使用权限,由管理员根据成员的分工权限给予分配。
这种层次化的分组协作管理方法使设计人员之间权限明确,互不干扰,提高了项目开发的安全性。其中实时的信息管理加强了分组成员之间的协作,分层的文件存放系统使工程数据更易于查询和使用,资源库的连接控制和共享提高了资源的利用率和使用的安全性。当前的许多EDA公司(例如Cadence、Synopsys公司等)都推出了基于该方法的分组协作管理软件(例如Cadence的Team Design Manager6]等)。一些EDA实验室和EDA平台的建设也开始使用层次化的管理方法,以提高团队的科研和开发效率。
目前,层次化的管理方法主要适用于使用同一公司的EDA工具的开发团队。而在大规模的芯片设计流程中,设计人员有可能混合使用不同公司(例如Cadence、Synopsys和Mentor Graphics公司)的EDA工具。这些工具的接口标准不一定相同,所以用一种分组管理软件中的层次化管理方法对跨公司的工具进行管理还存在一定的困难。因此,我们将这种层次化的管理方法与UML结合,使用UML描述分组协作层次化机构和EDA工具之间的调用,同时利用UML的语义的统一性可以生成一致的标准,或在文件之间进行标准转换,以解决不同工具的协作问题。
鉴于UML是用例图、结构图、活动图等进行表示的,不但能够描述设计人员的权限管理和资源分配,还可以描述层次化设计管理中的不同工具接口、设计过程中的信息处理等问题。如图5所示,采用UML来描述管理员进行信息处理过程的活动图。当芯片设计过程中有某个模块需要修改时,管理员通常会收到开发人员提交的设计修改方案,然后将其应用到整体设计进行综合仿真、测试等一系列验证,若修改方案不可行,管理员将向提交者发送验证结果和修改建议等信息,若修改方案可行,管理员将向提交者发送确认信息,同时向工程内其他小组发布该修改方案,使各小组按照方案更新各自负责的芯片部分。其中,状态图中“do/…”语句是管理员根据工程需要,自定义具体执行内容,例如字符串转换、数据库读写、工具的调用、接口标准转换等。由于UML可以采用标准化的模型和代码来转换不同的工具的文件标准,使SoC设计的各分工小组对不同公司的EDA工具调用变得统一,有利于控制芯片模块的质量,从而确保soc芯片的设计效率和质量。
图5 消息处理活动图
5 结语
结合UML建模的SoC设计方法和层次化的分组管理方法有效地解决了当前芯片设计时限缩短、设计分工不断复杂化而带来种种问题。UML建模与SoC设计的结合,实现了芯片的系统级设计。支持SystemC的UML架构在这种新型设计流程中的使用,可以有效衔接从硬件分离到进入RTL级的设计过程,解决了硬件部分在RTL级的设计抽象层次低、错误检测不及时的困难,提高了芯片的开发效率。而层次化的分组协作管理方法能够对有效协调SoC设计流程中多个设计小组的复杂分工与协作,使芯片各模块在多人开发的过程中始终兼容一致,这种管理方法与UML的结合还有利于优化分组协作,解决不同标准的EDA工具之间的协作问题。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:EDA工程建模及其管理方法研究