|
半导体业界认为可以将整个系统整合到单一模型之中时,IP平台设计为重点之一,而其研发关键在于平台须可区分差异性的元素,包括先进的系统模型和验证环境。本文重点为SoC的系统模型是如何设计和提供附加价值给软体开发者,并提供早期的虚拟原型(prototype),使IP更弹性的嵌入到设计工具中。
嵌入式硬体和软体设计工具的优缺点,通常建立在设计者对于IP能否有完整的掌握度和能见度,以及在开始设计的时候,这些IP是否能够被完整的取得。本文将探讨SoC的系统模型是如何设计和如何提供附加价值给软体开发者,并提供早期的虚拟原型(prototype),使IP更弹性的嵌入到设计工具中。
系统层级设计和模型
自从半导体理论上可以将整个系统整合到单一模型之中时,IP设计公司已经达到平台式设计的一个新纪元,并且鼓吹此种设计趋势多年。但迄今为何尚未见到以平台为基础设计IP的大流行呢?其关键就在于平台的范围不够大。现阶段只有包括系统层级的设计(system-level design;SLD),这包括:RTL硬体定义、BUS架构、电源管理策略、装置驱动程式、作业系统通讯埠和应用软体。
而研发成功关键在于一个平台仍须可区分差异性的必要元素,这包括先进的系统模型和验证环境。开发者需要来自RTL、系统模型、软体开发模型和真正的硬体开发主板所提供的完整平台。
平台的每个部份都对应到相同的系统架构,设计者在任何高阶的地方都可使用测试软体来做验证。在这个环境下,方便求出系统的频宽和性能需求。系统规模一定要能够扩展,允许设计者充分利用既有且经检验过的硬体IP和软体IP之外,亦能利用自行研发的IP,来设计自己独具的应用功能。而每个设计工作都有不同的方法需求,SoC设计者需要在每个设计阶段扩增IP,举例如(表一)。
平台方法
延展可能性
单位测试
平台架构从验证过的IP开始
标准界面,例如AMBA和uITRON,确保平台架构下 的延展
整合测试
BUS功能模型,用来确保平台内RTL有正确连接
额外的IP可以加到平台内RTL中
系统检测
同步验证处理器模型和RTL,以测试软体验证轫体的功能
额外的硬体IP可以加到 RTL内,并验证新的驱动程式
系统模型
平台的SystemC模型可以正确地和高速地输入资料和检测应用软体的功能
当移植到作业系统和开发软体时,可以加入额外的模型。
表一 不同设计阶段之平台设计方法与延迟可能性
在系统层级中,软体的必需性相对重要,在过去要求软体开发人员花费时间等待原型系统完成,不甚合理。软硬体同步验证能够缩短整合的时间,纵使如过去一样,提前到RTL设计完成时,开始进行同步验证,仍然会延误软体的整合,因为大多数硬体设计已完成,并无法更改。此时系统和软体设计者仍然缺乏共同的环境。
新一代解决方法为,首先使用SystemC定义系统,规划设计流程,然后区分硬体和软体区块,并交给不同的软硬体小组。此对软硬体系统整合而言,是一个重大突破。软体工程师不仅拥有一个平台可发展其软体,亦拥有一个C++虚拟环境,可重覆使用既有的程式库。
系统层级的抽象描述
定义任何新系统,从定义正式的规格到最后制成硅晶片和软体执行档(image),通常使用不同的抽象层来描述。共有五个抽象层用来涵盖一个完整的系统。系统功能描述越详细,产生的硬体功能越能满足需求。这些抽象层与OSCI(Open SystemC Initiative)的技术提案有许多相似之处,其中不同之处,如(图一)所示。
 图一 SoC设计的五个抽象层
在(图一)中,平台设计的RT抽象层是用蓝色描述,在这个层级上使用的语言是VHDL和Verilog,用以实现硬体。在RT层上方显示的是交易层(transaction level),在此抽象层中,对共通开放标准的落实提供一种语言模型,主要是SytemC。平台模型本身可能使用对内核心模拟上更具效率的特殊模型格式(非SystemC),但是它们皆可以透过介面连接到SystemC的模拟核心。
在抽象的系统模型环境中﹐一定要支援下述的三个抽象层:
(1)程式设计师视野(PV):程式设计师要看得到系统的详细行为。在部分情形下,这行为不可能是绝对的,因为它仰赖敏感的时间点。因此IP供应商的选择是提供或悲观的、或乐观的、或任意的、或典型的、或上述的多种组合。沟通是点对点,而且基于一个共通性,高效率的传输机制。此抽象模型在10~100 MHz范围内执行,能完全满足系统模拟和软体开发之需要。
(2)程式设计师视野和时间性(PVT):在一个PV模型延长时间点上,区段资料在一次交易中被完成(传回资料或暂停/错误),而且时间显示为「时间通过(time-passed)」并非事件通过(event-per-clock tick)。除此之外,PVT模型和PV相同。时间模型之间的沟通是在「週期唿叫(cyclic callable;CC)」抽象层上。这个抽象模型在1~5 MHz范围内执行,可以提供良好的系统模拟效果。
(3)週期唿叫(CC):为一个正确的週期转换,从「暂存器转换层」转换到「转换层交易」。透过有效率地处理抽象型态和不中断的行动序列(atomic action sequences),促使沟通的模拟速度(位址和数据传输率)增加。CC层使用以时脉为基础的执行指令,能直接映射成RT信号。资料是以轮询(polling)方式传输,非互动式的函式唿叫。这个抽象模型在10-100KHz范围内执行,能满足系统验证之需要。
在(图一)中的最上层是演算法层(AL)。演算法是系统的功能表现,可能已经应用在特殊的架构上。随着应用领域的不同,有许多应用程式语言在这里被使用,例如:MatLab、UML、SDL等。
在系统层级建模的方法
没有一种方法能完全适用于所有的系统,但是上述的抽象层方法对于一个系统的不同表示已尽可能达到。一个系统要在哪一个抽象层被实现,大部份是由系统设计者对此系统架构的信心,以及针对特殊的演算法开发出新架构的可行性而定。 对一个已知架构的系统,其中的实现细节,例如:不同匯流排的性能,并不为常人所知,下述方法可被利用。业界早已关注此方法,该方法是由RTL设计自然演进而来,而且硬体设计师对模型环境特别放心。
使用该方法,系统设计者能够容易地将软体和硬体区分。并且能够从CC抽象层开始,对系统的性能做深入的调查。虽然演算法设计工具可能无法以正规方式获取所需的规格,然而AL的主要任务并不一定是描述系统,因此演算法超出在系统层级使用IP来设计的讨论范围之外,在此将不涉及演算法设计工具。
微结构的设计
在CC层级建立系统模型,能够让设计者藉由粹取信号层级的细节内容导入每个交易中,因而能更有效率建立系统架构模型中每一细微部份。对一个完整的系统模拟,利用诸如SystemC这样的建模语言和抽象技术,可以达到10~100KHz的速率。从单一的匯流排传输週期到一整个匯流排通讯协定週期,针对每一个时脉週期(cycle-by- cycle)CC层级都提供映射。在这个环境下,结合一些高价值的IP模型,并在单一週期到一整个通讯协定週期中,减少一些信号事件,这使模拟效率提高,处理速度可以加快。
通讯架构是由三个基本模型构成的:阶级化的通道模型,负责管理每个元件的连接状态;仲裁者,负责接受请求,并按照请求者的优先顺序分配通道资源;解码器,负责将位址解码,进入特定的连接区段(传入或送出)。仲裁者和解码器本身虽然是硬体,但一般是希望能用SystemC模组来建立其模型,且每个SystemC模组之间是由单一介面相通。
此系统的主宰者(host)可能是处理器模型或记忆体控制器,而从属者(slave)可能是周边设备,例如:UART。主宰者是时脉模型,它产生资料结构形成匯流排的交易内容;处理器传送这些资料到匯流排。从属者也是时脉模型,它被匯流排驱动,接受由匯流排传来的资料结构,并处理之。
此方法的重要部份是:转换到RTL设计的能力和对整个系统保有一个验证的基础。利用SystemC模型的CC介面,可以进入RTL模型。以ARM为例,在SystemC模型中已经存在一个AHB匯流排之间交易的映射,和一个AHB硬体的各种信号,这个介面通常是通用型的(generic),并保证装置能正确运作。
软体的实现
微架构的主要优点是能够将它当作韧体和中间软体(middleware)的开发雏型(prototype)。一般而言,这是属于指令集模拟(instruction set simulation;ISS)的范畴,但是在复杂的装置里面,软体和硬体之间存在着即时的互动关系,很难利用ISS技术来观察。典型的现代ISS包括简单的周边装置之架构模型,它们在PV抽象层上操作,因此无法提供真实的系统层级资讯。
随着硬体和软体复杂性的增加,一个可替代ISS的技术逐渐流行,即利用FPGA来建立系统原型。这些工具可在真正的硬体上高速地执行软体,通常允许硬体装置,例如:网路装置,彼此相互连接,传输真正的资料。针对正在目标板中执行的软体,软体开发者使用硬体除错和追踪工具,就能够得到绝佳的侦错能见度。当软体开发者需要针对与作业系统紧密相关韧体做除错时,则除错工具必须提出作业系统的现况资讯,并提供作业系统层级的原始资讯,例如:执行绪(thread)和号志(semaphore)等。
然而,这种原型系统的基本缺点是,在需要许多软体工程师一起开发时,是很昂贵的。并且当硬体广泛地完成后,软体在开发週期上相对比较缓慢。和传统的软体开发工具相比较,在CC抽象层上建立系统模型不失为一个好方法,其优点有:
(1)用来开发硬体微架构的工具,提供一个早期的系统原型,可执行完整的系统软体。
(2)和软体模型一样,虚拟的原型能提供给许多软体工程师使用。
(3)在CC层级上可以达到100KHz的速度,通常这对低阶软体开发是适合的,并且对于大型的开发,譬如作业系统的启动(bring-up)也是适用的。
IP模型
对一个完整的系统模拟而言,想要能够达到100KHz的速度,高品质IP模型是重要关键。业界已将SystemC当成系统层级的建模语言,现在的IP供应商已能提供标准模型给使用多种不同EDA工具的设计者。使设计者能够结合最好的模型与最好的工具。
以ARM为例,它的微架构SystemC模型如(图二)所示,ARM RealView模型程式库结合ARM週期唿叫模型技术和最新的AMBA AHB週期层级介面(AHBCLI)
和ARM RealView除错器。AHBCLI允许设计者在CC抽象层上建立完整的AHB模型,同时确保能完全遵守AHB通讯协定。

图二 ARM的微架构
依据AHBCLI建模,界于ARM核心模型和AHB匯流排架构之间的传输完全是週期精确(cyclic-accurate)的,ARM核心模型和匯流排架构都是以共同的系统时脉来计时。AHBCLI可以将週期时脉映射到实际的电路转换成接脚(pins),故允许RTL SystemC模型的直接连接,或可以和硬体描述语言(HDL)或逻辑闸模型一起模拟。这工具提供下列优点:
(1)验证SystemC模型时,能够对RTL週期性的检验。这对由上而下的设计方法是必需的。它亦支援由下而上的自动产生系统,这可由HDL-SystemC模型中自动抽取出来。
(2)能够混合各种不同层级的模型。例如,将一个新功能区块的系统层级模型置于RTL- SC(SystemC)中「精鍊」,同时维持系统的其它高层级和快速模型不变。此在「单元替换(unit-substitution)」的验证方法中是很重要的。
(3)对ARM和AMBA用户而言为简单之事,实因介面的内涵容易映射到真正的硬体上。 架构的探索和开发
对于一架构不清楚的系统,需要一个能探索架构的环境。对业界而言,这是一个相当新的领域。迄今,SystemC 显然是最好的高阶建模语言。用SystemC探索架构的重点是:要让架构设计者了解系统的功能,可能的软硬体分割方式和各种不同架构所表现的性能是什么。
演算法设计工具是这类型设计探索的基本成份,而且它被用来开发演算法和定义新的系统或产品。然而,如之前所述,AL的主要任务并不一定是描述系统,因此在此不提及AL。
如(图三)所描述的设计流程,系统功能被区分成硬体和软体元件。在这个方法中,已经排除作业系统和软体的性能模型,并且直接达到软体实作的阶段。虽然软体模型仍在开发中,但是SystemC 3.0的重要功能将包括对抽象化软体和作业系统模型化的支援,当此方法普及以后,它就会成为标准介面,而它的辅助工具亦将流行。
虚拟系统的原型
在(图三)中,PV抽象层的输出是一个虚拟系统的原型。它完整地将系统的功能模型化,而且针对一个软体应用,提供程式设计者所必需的硬体。为达到这个目标,装置的整个硬体功能都要在PV层上被模拟出来。
功能区块设计的一重要因素是介面的设计:在一个系统中的元件要如何与其他元件沟通。在PV系统模型化中,一系统仅由一群IP元件组合成的。在这个抽象层上,设计者唯一关心的是哪些元件是需要沟通,而不是何时沟通(虽然排序亦很重要)。为了确保只有系统的功能,而不是即时资料(timing critical data)被包含在这个虚拟原型中,有关系统中每个装置的时间回应资讯,不应该由软体程式设计者来决定。

图三 SoC设计流程
主宰者模组(master module)可能对系统时脉很敏感,或对系统的其他任何事件很敏感。但是设计者必须了解:时间准确的观念是无法维持的。因此一旦启动一个程序(process),大量工作可能将会被执行。PV抽象层提供设计者所需的工作时间最小单位(granularity size)的提示,大约是数个时脉週期。一个PV模型必须尽全力符合这个最小时间单位,而不会在计算已经过去的週期数量上,花费任何重大成本。
对于从属模组,一般的期望是:它的传输功能必须立即传回(return)资料结构,在此资料结构中包含着任何回传的数据。并不期望它对任何事件敏感,或真正产生任何事件。
因为硬体架构的功能是在系统层级(SystemC)完成的,它必须和系统的环境模型(例如:虚拟面板)结合,为软体开发提供一个系统原型。然后,软体的实作就能在一个完整的系统环境中被检验。而且也可以同时在硬体空间中,进行标的比较(benchmarking)和硬体实作。
系统的性能模型
除了验证新架构的功能外,架构设计者需事先了解此架构被实现后的表现如何。新技术藉此功能模型利用时序资讯来描述,并对系统中的每一个元件提供性能数据。当每一个时序模型通讯时,这些资讯可以被收集和对照,如此一完整的系统性能就可以获得。PVT方法被用来开发系统性能模型,因为其为PV模型的延伸。因此时序和PV无关。由PV建构的系统性能模型在功能上是正确的。PVT不添加任何需要被传输的资料,而只提供资料何时要被传输的额外资讯。
PV和PVT之间的不同,可以从AMBA通讯协定中看出来。PV抽象介面层将AHB-Lite看成位址、数据、保护资讯、讯爆(burst)长度的组合。AHB-Lite的时序通讯协定是由HREADY信号来描述。在AXI通讯协定中,程式设计者心中的系统架构没有改变,但是介面的时序问题变得更复杂,并且需要引用额外的时序来描述此通讯协定(AREADY、AVALID、RREADY、RVALID、WREADY、WVALID、BREADY、BVALID)。
在系统中,复杂的时序模组可能含有对时脉边缘(clock edges)或其他事件敏感的元素。这些时序和与它们通讯的功能对象,完全交由IP设计者针对每个元件逐一解决。当传输作业已经在某元件的介面上进行时,此通讯将会通知该传输元件上的时序模组,和与它们相关的内部状态之重要变化。
该层级的模型化将提供一个机制,藉此时序模组和系统时脉之间能彼此同步。这与週期唿叫模型的输入和输出相似,唯一不同是没有传送数据。在一个CC模型中,数据是在指定的时间内传送。在一个PVT模型中,数据已经由PV模型送出,在数据被送出的时间点上,即由时序模组负责管理输入和输出作业。为便利设计,一般希望PVT时序模型的范例和CC抽象层是相同的。
IP模型的范例
如同CC模型一样,高品质的IP模型也需要确定能够达到PV和PVT的性能目标。PV抽象层的点对点传输通讯协定结合高速模型,目前约可达1MHz的速度。这对大多数的软体开发而言是足够,但是应用软体通常需要更高的速度。这需要更新的模型,但是在业界公认的SystemC环境里,目前还没有这种模型出现。
(图四)是ARM架构SystemC模型,包含ARM RealView模型程式库、ARM ISS技术整合高效率的点对点介面。在PV抽象层上的介面标准定义现在正由OSCI的TLM工作小组拟定中。
在此系统中,模型之间的传输是点对点。ARM核心模型的记忆体介面是透过一个SystemC通讯埠将交易内容直接传输到匯流排目标系统的介面上。当一笔交易从DMA控制器经由一个具单一传输功能(Rx FIFO)的记忆体,传送到系统的主记忆体时,DMA控制器将「拦阻(block)」其它传输作业,直到此传送作业完成,且记忆体传回数据为止。
结语
因为SystemC的发明,SoC的设计已进入群雄竞逐的阶段。虽然OSCI所制定的标准,目前尚未被任何一个正式的国际组织所承认和採用,但是它已俨然成为业界事实上的(de facto)标准。
国内设计16-bit以上SoC的公司目前都面临着软体开发困难的苦恼,本文所介绍的系统层级设计方法将是解决此问题的方法。(本文原载于台湾《零组件杂志》)

图四 ARM架构SystemC模型
>>此文章对您有用吗?如果不能解决问题请在线提问?如果您有更好的案例请快速发布!
|