SystemC与嵌入式架构设计

SystemC与嵌入式架构设计      文/高焕堂 2008

 

简介SystemC

 

SystemC的角色与Verilog DHL相近,都是一种数字电路的描述语言。但是它与Verilog 的主要差异是:

Verilog 擅长于RTL层及的描述,但缺乏更高层的TL(Transaction Level)级的描述能力。而SystemC则提供

充分的TLM(Transaction Level Modeling)的能力。 TLM着重于系统层级的整合架构(Architecture)规划,

建立软件与硬件协同设计之基础。所以SystemC在促进软硬整合设计上扮演非常重要角色。

 

严格来说,SystemC并非一个新的语言,而是C++的类别库(Class Library)而已。也就是说,人们将硬件

领域的重要设计概念(Design Concept)以C++的类别等机制表现出来,组织成为一个类别库,就成为SystemC了。

由于SystemC幕后运用了C++的对象导向(Object-Oriented)机制,提供高阶的抽象建模能力,让设计人员能轻易

进行TLM层级的软硬整合仿真与设计。 SystemC是于1999年由多家公司所组成的Open SystemC™ Initiative机构

所提出。2000/3/28 正式推出SystemC 1.0版。2001/2/1推出SystemC 2.0。2005/12/12获得IEEE.认可为业界标准。

 

SystemC应用于软硬整合架构设计

 

 当全球快速迈向数字家电、汽车电子化、M化生活之际,软、硬件整合设计(SW-HW Co-Design)蔚为风潮。

传统上,软件人员等待硬件先完成,才开始建置软件;但是硬件又必须不断与软件沟通才能检验硬件之正确性;

因此常常处于蛋生鸡鸡生蛋的困境里。就如David C. Black和Jack Donovan在其所著的SystemC书中所说:

「在兼具软件和硬件的复杂系统里,通常等待硬件先完成之后,才会进行软件之细部设计。因为软件人员

依赖实际的硬件环境来测试其软件。但是这种测试用的真实硬件环境,其建置是很复杂的。这种依赖关系,

常导致项目的一筹莫展。」 这说明了:如果我们能够运用软件来建构硬件之模型,藉由硬件之模型测试软件,

就不必依赖真实硬件环境了,也不必等待硬件组件先建置完成了,就能及早开发软件了。他又说到:「在建置

硬件之前,先检验硬件与软件之互动,是愈来愈重要了。」

 

当我们以硬件之模型来测试软件,软件就能提前而与硬件同步开发了,让我们能够在建置硬件之前,先检验

硬件与软件之互动接口了。如此就化解了上述所面临的传统困境了。如图1所示。此图说明了:多花一点

时间进行软硬整合架构设计(architecture design),可提前检验软件的细节设计;并进而提前检验硬件与软件

之互动接口,加速硬件之开发。简而言之,软硬整合设计能带来两项效益:

 

◆ 提早开发软件(early software development)

◆ 提早测试硬件功能(early hardware functional verification)

 

Black & Donovan更强调:「事实上,仅仅是「提前开发软件」这项效益,就值得去大力实行这种新途径了。」 传统上,常藉由Verilog或VHDL仿真环境来检验硬件功能;然而当系统较为复杂时,此种仿真之速度就变得很慢。当仿真速度太慢时,常以硬件仿真仿真(hardware emulation)来替代之,但是硬件仿真仿真环境又很昂贵。于是催促了SystemC的问世,以SystemC来建立硬件之模型,并进行软硬件整合模拟,化解了上述之困境。综而言之,刚才提到软硬整合设计与仿真之主要效益是:

 

● 体不必等待硬件先完成,因此缩短整体之开发时程。

● 硬件同步互相验证,大幅提升质量。

● 基于模拟结果,有效验证客户需求。

 

此外,还有许多其它效益,例如:

 

◆ 强化软硬整合架构设计,并同步验证,精致化软硬件组件之接口(interface)设计。

◆精致接口可降低组件间之相依性(dependency),提升组件之抽换性。

◆ 组件之标准化与抽换性让系统更易于维护与演进(evolution)。

◆ 软硬件之角色更能互补而互相辉映。

 

软件是温柔婉约的贤内助,硬件是强而有力的对外服务者。譬如软件是圣诞树,硬件是挂在树上的糖果。

软件含有善变的规则(rule),以便控制复杂的系统状态(state)和行为(behavior)。

 

SystemC特别注重Channel之规划

 

硬件模块之间是依赖信道来连接的,就像两部计算机之间依赖网络线来连接的。就分工的角度来看,

大模块的设计者才有权决定购买何种厂牌的通道来连接两个小模块。不同厂牌的通道各有其特点,例如

频宽速率不同、价格成本也不一样等等。这就像汽车可以配上不同厂牌的轮胎一般,也就是这个理由,

SystemC就特别重视信道,强调其接口之定义。与其说SystemC重视信道,不如说它重视信道之接口。

这就像汽车业者重视轮盘之规格一般,让Nissan、Toyota等汽车都能配上固特异的轮胎,让汽车厂与

轮胎厂都能针对轮盘接口而独立发展与改进,并且让车主随时自由地配上喜欢的轮胎。

 

SystemC应用于逻辑合成设计

 

根据Wikipedia的说明(http://en.wikipedia.org/wiki/Logic_synthesis):「逻辑合成就是将RTL层级的电路叙述

转换为较低逻辑闸层及叙述。」 大规模集成电路设计通常采用由上而下(Top-down)的方法,首先根据设计

需求划分模块,再依模块进行设计。通常采用像SystemC或Verilog 等语言来完成RTL(Register Transfer Level)

的行为描述,透过模拟工具进行验证之后,就以自动化工具来进行逻辑合成,而产出下一级(即闸级)的叙述。

在逻辑合成过程中,自动化工具会依据不同的约束条件如面积、延迟、功耗和可测性等,来将RTL级叙述所

指定的功能转换为逻辑闸、以及逻辑闸间的连结线路之最优化安排。如果把逻辑合成对应到一般的软件开发

程序,它相当于软件人员熟悉的程序自动产生(Code-generation)动作。

 

何谓Verilog?

 

Verilog DHL是一种流行的数字电路的描述语言(Hardawre Description Language, HDL),它是在1985年由Gateway

Design Automation公司所发展出来的。 Verilog HDL是基于C语言之基础而发展出的,所以它的语法很接近C语言,

其目的是要让熟悉C的人员都能迅速学会Verilog HDL。目前在IC设计领域,约有90%以上的公司采用VerilogDHL

来设计IC。从C到学习Verilog HDL过程中,最主要的新技巧是:C程序大多是单一执行绪(Single Thread)的循序

(Sequential)流程。而Verilog HDL则必须采用多执行绪来描述硬件的并行(Concurrent)活动。并且经由仿真器产生

事件(Event)来驱动这些并行活动。有许多厂商提供仿真器来支持Verilog DHL所需的事件驱动仿真。藉由模拟来

验证设计的正确性,一旦验证通过了,才由自动合成工具,将RTL层级的Verilog DHL叙述转换为闸层级的细节

设计,逐步进展到制造出实体的IC为止。※

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值