基于模式的SoC设计方法研究
引 言
SoC(system on chip) 是微电子技术发展的一个新的里程碑,SoC不再是一种功能单一的单元电路,而是将信号采集、处理和输出等完整的系统集成在一起,成为一个有专用目的的电子系统单片。其设计思想也有别于IC,在一个或若干个单片上完成整个系统的功能。
SoC开发和设计存在一些问题,如描述语言不统一、抽象层次低、仿真速度慢、可重用性差、设计性能无法保障、RTL级发现的问题需要重新进行整个的设计流程才能解决,因此SoC的建模与设计的方法成为当前刻不容缓的课题。上述种种问题与曾经困惑软件业的"软件危机"的表现非常类似,为了解决软件危机,人们提出了软件工程。因此,本文的思路是将软件工程中应用最为广泛的面向对象技术引入到SoC设计当中。
设计模式是面向对象的精髓,在软件中已经得到了广泛的运用,在SoC设计中使用设计模式,可以降低软硬件开发之间的鸿沟,对于软硬件协同设计有很大的帮助,使系统得到更大的可伸缩性。
SoC设计方法学
传统的设计方法
在传统SoC设计过程中,系统一开始就被划分为软件和硬件2大部分,软件和硬件独立进行开发设计这样隐含一些问题,如软硬件之间的交互受到很大限制、软硬件之间的相互性能影响造成很难评估和系统集成相对滞后,导致设计质量差、设计修改难和研制周期不能有效保障。
传统SoC设计流程中,EDA设计方法只作用于SoC后级,缺乏SoC前级设计方法与系统验证策略,从而导致了RTL电路模型中错误成分复杂化与验证人工开销激增. 另外,软件开发者必须等到硬件的设计和结构都完成并通过验证之后,才能开始软件的设计和实现,所以开发的周期将会持续很长,产品的竞争力会因此而下降.
基于模式的设计方法
针对传统设计方法的不足,新的SoC设计方法应该在行为级就开始建立仿真模型和进行行为与结构的验证,同时必须强调结构化、封装和重用硬件设计在高层次的抽象的重要性。
因此,本文提出基于模式的SoC设计方法PBSOC ,如图1所示,强调高层次的系统建模,更有利于设计的复用. 在需求分析阶段,根据规格说明,使用面向对象的分析方法,给出用例的关系和顺序图. 在系统级设计阶段,使用统一的语言SystemC进行软硬件协同设计。SystemC是由Open SystemC Initiative (OSCI) 提出和维护的开放源代码的基于C++统一软硬件建模平台. 软硬件模块都用C++ 描述,对不同软硬件划分方案的评估和权衡可以方便地进行。
PBSOC使用形式化方法和面向对象的Petri网对系统的行为和结构建模,不涉及任何结构和时间的细节,并通过实时UML进行可视化的描述. 它不仅具备传统面向对象方法所具有的风格,而且具有Petri网直观模拟系统动态行为的优点,从而能够更加简洁、清楚地描述系统的静态结构和组成元素之间的层次关系。将Petri网思想引入面向对象建模当中,可将系统看作是一些相互作用的对象组成的集合。集合中的每个对象都具有自己的属性和任务,它们根据收到的消息、句柄等来完成相应的任务,从而实现系统的整体功能.在系统级建立面向对象的设计模式库和IP复用库,OO库即面向对象数据库,主要存放的是各种SoC设计模式(pattern) ,在SoC系统框架设计、IP设计以及IP通信设计中都可以使用模式。IP库中存放的可以是普通的IP核,即其他厂商设计的成熟的IP;也可以是用面向对象的方法设计的一些IP 核,即IP 的设计过程也遵从于PBSOC。
图1 PBSOC 设计框架
SOC设计的设计模式
设计模式
模式是解决某一类问题的方法论,它把解决某类问题的方法总结归纳到理论高度。虽然模式起源于建筑,但其思想也同样适用于面向对象设计模式。指导模式设计有3个重要概念,即重用( reuse) 、接口与实现分离和低耦合(loose couple)。重用是系统的设计目标,主要通过继承(inheritance) 和对象复合(composition) 实现. 接口与实现分离指接口保持不变,用分离带来灵活性,主要表现形式为多态性(polymorphism)。低耦合可以降低复杂性。
现存的硬件设计模式和重用方法主要是处理RTL(寄存器传输级) 设计和编码的。这种在设计过程中积累的经验在设计重用时是非常重要和有用的,然而并没有涉及系统级设计的问题。因此在系统级应用面向对象的方法可以克服这些鸿沟,使用设计模式还可以更快速和直观地捕捉设计的内容,提高设计的可理解性,将抽象的级别上升到系统级,能够处理更复杂的硬件设计。
SoC设计模式
SoC的设计模式与软件的设计模式的不同,主要在于软件和硬件的设计差别。SoC的设计不仅包括软件,还有硬件以及软硬件的协同设计,因此,它涉及物理约束、实时性和并发等关键问题。所以要将软件的模式进行改造,并使用软硬件通用的描述语言进行描述。
软件设计模式中运用得比较多的面向对象方法是继承,它同样适用于SoC的设计模式当中,但必须考虑SoC系统中的物理约束。一些软件设计模式,主要是创建型模式,能够动态地生成系统的对象,而SoC系统中硬件部分结构是静态的,因此,它们不适合于SoC硬件部分设计模式,但是对于SoC系统中的软件模块还是可以适用的,例如原型模式和命令模式等。
大部分的结构型模式只需要稍做修改就可以应用到SoC设计中,主要是实现方式的问题,即用软硬件通用的语言来重新描述它。而行为型的模式,需要加入实时系统中一些约束。对于典型软件模式改造的前提和目标是设计的可重用性,主要是SoC系统级设计的可重用。在SoC中FSM(有限状态机) 是最常用的一种行为表达方式,因此状态转换的频率是非常多的.如下面的状态模式,通过改造,可以用于描述硬件设计。
新的SoC设计模式的提出是PBSOC 最终的目标。它主要针对的就是高层次SoC设计中最常用的一些设计方法,以及构筑SoC系统的基本组件和基本结构
,如层适配模式(layeradapter pattern) 和包装器模式(wrapper)。本文仅给出了模式的结构,具体的实现不在此赘述。
(1) 状态模式(state pattern)
状态模式的意图是使一个对象在内部状态改变时可以改变自己的行为,从客户看来,好像对象改变了它的类。即不同的状态,不同的行为;或者说,每个状态有着相应的行为.考虑SoC片上总线协议, 片上总线总是有3 个状态: 闲( IDL E) 、忙(BUSY) 和关闭(CLOSE) . 而各个状态的处理过程不一样. 如图2 所示,BusProtocol 类维护一个表示总线当前状态的状态对象(一个BusState 子类的实例) . BusProtocol 类将所有与状态相关的请求委托给这个状态对象. BusProtocol 使用它的BusState 子类实例来执行特定于连接状态的操作. 一旦总线状态改变, BusProtocol 对象就会改变它所使用的状态对象. 例如,当片上总线从闲置状态转为忙状态时,BusProtocol 会用一个BusBusy 的实例来代替原来的BusIdle 的实例。
- 嵌入式系统快速重启的研究(11-16)
- 嵌入式定位系统的实用设计与软件算法实现(11-28)
- 基于单片机便携式颜色自适应识别电路的设计(06-04)
- 一种ASIC硬件图像匹配最大互相关算法的设计和实现(06-23)
- AVR定时器的工作类型模式介绍(07-26)
- 基于USB从机技术的绝缘电阻表自动检定系统通信接口设计(10-29)