本书主要介绍SystemC的硬件建模方面,即SystemC的RTL可综合子集。采用该子集编写的模型可以综合成逻辑门电路,进而进入模型的硬件实现阶段。
本书专门面向那些希望学习和了解SystemC的设计工程师和系统工程师。本书适合于初学者,可以作为高校的体系结构、数字设计和系统设计等课程的教材。\r\n
第1章 绪论
1.1 什么是SystemC?
1.2 为何采用SystemC?
1.3 设计方法
1.4 设计能力
1.5 SystemC RTL
1.6 本书的组织结构
1.7 练习
第2章 SystemC入门
2.1 基础知识
2.2 再看一个2X4译码电路示例
2.3 描述层次关系
2.4 验证功能
2.5 练习
第3章 数据类型
3.1 值保持器
3.2 类型概述
3.3 位类型
3.4 任意位宽的位类型
3.5 逻辑类型
3.6 任意位宽的逻辑类型
3.7 有符号整型
3.8 无符号整型]
3.9 任意精度的有符号整型
3.10 任意精度的无符号整型
3.11 解析式类型
3.12 用户定义的数据类型
3.13 推荐采用的数据类型
3.14 练习
第4章 组合逻辑建模
4.1 SC—MODULE
4.1.1 文件结构
4.2 示例
4.3 读写端口和信号
4.4 逻辑算符
4.5 算术算符
4.5.1 无符号算术
4.5.2 有符号算术
4.6 关系算符
4.7 向量与位区间
4.7.1 常量下标
4.7.2 不是常量的下标
4.8 if语句
4.9 switch语句
4.10 循环语句
4.11 方法
4.12 结构体类型
4.13 多个进程和延迟
4.14 小结
4.15 练习
第5章 同步逻辑建模
5.1 触发器建模
5.2 多个进程
5.3 带异步预置位和清零的触发器
5.4 带同步预置位和清零的触发器
5.5 多个时钟与多相位时钟
5.6 锁存器建模
5.6.1 汀语句
5.6.2 switch语句
5.6.3 避免产生锁存器
5.7 小结
5.8 练习
第6章 其他逻辑
6.1 三态驱动源
6.2 多个驱动源
6.3 无关值处理
6.4 层次结构
6.5 模块的参数化
6.6 变量和信号的赋值
6.7 练习
第7章 建模示例
7.1 可参数化的三态输出寄存器
7.2 存储器模型
7.3 有限状态机建模
7.3.1 Moore有限状态机
7.3.2 Mealy有限状态机
7.4 通用移位寄存器
7.5 计数器
7.5.1 模N计数器
7.5.2 约翰逊计数器
7.5.3 格雷码可逆计数器
7.6 约翰逊译码器
7.7 阶乘模型
7.8 练习
第8章 测试平台
8.1 编写测试平台
8.2 仿真控制
8.2.1 sc—c10ck
8.2.2 SC—traCe
8.2.3 sc—start
8.2.4 sc—stOp
8.2.5 SC—time—Stamp
8.2.6 sc—simulatiOn—time
8.2.7 sc—cycle和sc—initiali2e
8.2.8 sc—time
8.3 波形
8.3.1 任意波形
8.3.2 复杂的重复波形
8.3.3 派生时钟的生成
8.3.4 从文件中读取激励
8.3.5 反应式激励
8.4 监听行为
8.4.1 断言正确的行为
8.4.2 将结果转储至文本文件
8.5 其他示例
8.5.1 触发器
8.5.2 同步输出的多路选择器
8.5.3 全加器
8.5.4 周期级仿真
8.6 sc—main函数内的语句次序
8.7 记录聚合类型
8.8 练习
第9章 系统级建模
9.1 SC—THREAD型进程
9.2 动态敏感
9.3 构造函数的参数
9.4 其他示例
9.4.1 最大公因子
9.4.2 滤波器
9.5 端口、接口和信道
9.6 高级论题
9.6.1 共享数据成员
9.6.2 定点类型
9.6.3 模块
9.6.4 其他方法
9.7 仿真算法
9.8 练习
附录A 运行时环境
A.1 软件安装
A.2 编译
A.3 仿真
A.4 调试
附录B SystenlCRTL:可综合的子集
B.1 SystemC语言要素
B.2 C++语言要素
参考文献
20世纪下半叶,微电子技术得到了长足发展。其中,电子设计自动化(ElectronicDesignAutomation,EDA)技术起到了至关重要的作用。EDA技术引发了整个电子领域的一场螺旋式革命。半导体制造工艺的巨大进步已经使集成电路设计从晶体管的集成发展到逻辑门的集成,现在又发展到知识产权芯核(Intellectual Property core,IP core)的集成,即芯片系统(System-on-a-Chip,SoC)。芯片系统不再是一种功能单一的单元电路,而是将信号采集、处理和输出等完整的系统集成在一起,是在单芯片上广泛采用预先设计好的IP模块,通过各种重用技术快速开发出来的集成电路。这为电子设计带来了前所未有的新挑战,系统设计不得不同时考虑软件和硬件两部分的开发,也不得不考虑知识产权芯核的集成。传统的硬件描述语言将难以胜任诸如系统级建模、软硬件协同设计与验证等艰巨的任务。
近年来新兴的SystemC就是电子设计和EDA领域的十多家大公司为解决SoC时代的新挑战而提出来的。它建立在强大、灵活的C++语言基础之上,具有很强的数据表达能力和计算能力。同时,由于它引入了并发、定时、事件等硬件概念,因而不仅具备了寄存器传输级硬件描述能力,还具备了在系统级抽象层次上进行描述的能力;不仅可以用于软件建模,还可以用于硬件建模,使软硬件协同设计、仿真和验证得以有效实现,从而在设计阶段早期就能够发现和解决问题,减少了设计反复。此外,SystemC的出现也为更好地开发和集成IP芯核提供了可能和保障。这一切都能够有效地帮助设计人员缩短设计周期,赢得更好的市场效益。
目前开放式SystemC联盟(OpenSystemCInitiative,OSCl)的各成员单位,如Syn—opsys、Cadence等公司,都已经推出众多功能强大的、基于SystemC的设计工具,并获得了广泛应用。SystemC还有望成为IEEE标准,届时它将像VHDL和Verilog那样在电子设计领域得到普遍应用。
目前,我国IC产业界和学术界也在广泛讨论SoC设计、IP集成、软硬件协同建模仿真等论题。本书作者J.Bhasker作为负责制定VHDI。和Verilog HDL语言综合标准的IEEE工作组主席,对硬件描述语言有着长期深入的研究和全面准确的把握。这本“ASystemCTMPrimer”也同"Verilog~HDLSynthesis,APracticalPrimer"(该书中文翻译版《Verilog~HDL综合实用教程》已由清华大学出版社出版)一样,内容全面,深入浅出,适用面广,对于打算学习和使用SystemC的学生和工程设计人员来说是一本极好的入门书,可作为SoC设计等相关课程的教材,对于ASIC设计工程师和系统设计工程师也有很高的参考价值。
本书由孙海平、何伟、徐学迅和刘方海主译,孙海平统稿,何伟和郑静等进行了修订和校对。在此,谨向为本书的出版付出辛勤劳动的所有人员致以诚挚的感谢!
译者在翻译过程中力求准确,但限于水平,一定存在错误和不足之处,恳请读者通过电子邮件hp.sun@263.net向译者提出批评和指正。
为什么你会选择本书?我认为你是要学习SystemC。那么,你选对了!来吧,本书将带你进入SystemC领域。只要读完第2章和附录A,你很快就能开始编写SystemC模型并对它们进行仿真了。
SystemC既是系统级描述语言,又是硬件描述语言。它是可以对硬件和软件系统进行建模的一种语言。说它是硬件描述语言,是因为它可以在寄存器传输级(RegisterTransferLevel,RTL)进行建模;说它是系统级规约语言,是因为它可以在算法级进行建模。还可以采用SystemC对整个系统进行建模,并像软件编程那样描述系统的行为。尽管它能描述门级网表,但其本意并非如此使用,因为使用和建立门级网表模型,既繁琐又低效。
SystemC建立在C++语言基础之上。SystemC将并发、定时事件和数据类型等重要概念引入C+十,从而扩展了C+十的功能以对硬件进行建模描述。SystemC的这一能力是通过类库提供的,类库提供了利用硬件元素、并发和反应行为对系统体系结构进行建模的强大新机制。这些机制都只是建立在C++编程语言的类结构基础之上。SystemC还提供了仿真内核,可用来对设计对象或系统的可执行规约进行仿真。
本书介绍的是SystemC 2.0标准。该标准由开放式SystemC联盟(OpenSystemCIniti—ative,OSCl)语言工作组建立,主旨是在不久的将来使其成为一项IEEE标准。关于Sys—temC和OSCI更多的信息,可以访问网站http://WWW.systemc.org。从该网站可以下载SystemC 2.0软件包,软件包中的功能规约和用户指南全面地介绍了SystemC 2.0标准。
1999年,很多家公司精诚合作成立了OSCI。同年9月,第一个SystemC版本——SystemC 0.9版以开放源代码和免费获取的方式发布了。2000年3月发布了SystemC 1.0版。该版本还仅限于行为级和寄存器传输级建模,而缺少很多用于系统级建模的语言要素。
2001年10月发行的SystemC 2.0版本具有许多系统级建模要素。新增加的要素包括信道、接口和事件。本书是根据SystemC 2.0版本编写的。
本书主要介绍SystemC的硬件建模方面,即SystemC的RTL可综合子集。采用该子集编写的模型可以综合成逻辑门电路,进而进入模型的硬件实现阶段。集中介绍硬件建模方面的原因有三点:
首先,当今熟知VHDL(即VHSIC硬件描述语言,IEEEl076标准)和Verilog HDL语言(1EEEl364标准)的硬件设计人员可能愿意去了解和学习SystemC。因为抽象层次正从寄存器传输级转移到更高层次上,所以目前进行RTL建模的设计人员将不得不学习系统级建模。本书将以十分自然的方式向设计人员介绍SystemC,以帮助他们跨越这种抽象层次的鸿沟。
其次,编写高层次算法模型的系统设计人员需要理解RTL综合,这样他们就能对
模型反复细化至寄存器传输级,从而将模型综合成门电路。
第三,模块设计人员能够采用RTL可综合子集来开发知识产权(Intellectual
Property,IP)模型,这样就能实现可重用和可综合的IP功能块。
本书专门面向那些希望学习和了解SystemC的设计工程师和系统工程师。
本书适合于初学者,因此并没有涉及SystemC的某些高级论题。比如,没有讨论在
SystemC中定义的主—从通信库,因为设计方法的专用库超出了本书的讨论范围。
本书可以作为高校的体系结构、数字设计和系统设计等课程的教材。可采用本书来
介绍SystemC概念。采用SystemC作为课程的一部分,一个很大的优点在于SystemC
仿真器和所有SystemC类库都是开放源代码的,每个人都可以免费获取和使用。因为不
需要任何资金投人,所以吸引了很多大学教授讲授和理解这种新的系统级设计语言。开
放源代码这一事实,允许有热情的大学生通过直接修改源代码,从语言要素和优化等方面
扩展SystemC的能力。
本书是墓手笔著个人的理解菜介绍5ystemC的RTL可综合子集,诙子集与IEEE标
准中的Verilog和VHDL的RTL可综合子集(1EEE 1076.6标准和标准草案IEEE
P1364.1)吻合,笔者作为主席领导了那两项标准化进程。目前的SystemC综合工具是否
支持该SystemC可综合子集还不是很肯定。关于综合工具所支持的特定功能要素,读者
应查阅对应的工具文档。
阅读本书和理解SystemC需要哪些背景知识呢?首先必须了解C+,语言的基础知
识,这是不可或缺的。其次还应该有逻辑设计的背景。如果已经了解VHDL和Verilog
HDL这两种广为流传的硬件描述语言中的任何一种,那么利用本书学习SystemC将会
如鱼得水(本书并未刻意将VHDL和Verilog HDL模型与SystemC模型等同起来)。如
果对C十十语言相当了解,就会发现采用SystemC编写高级系统级模型异常轻松——同
样也能够理解SystemC的本质了。然而,了解VHDL或Verilog HDL并不是阅读本书
的必要前提。若想驾驭SystemC的全部功能,需首先学会使用C+,的高级功能。然而,
如果只进行硬件建模和理解RTL可综合子集,那么只需要了解C++编程语言的基础知
识。Addison-Wesley于1998年出版的由Stanley B.Lippman和Josee Lajoie撰写的
“C十+Primer,ThirdEdition”就是一本学习C++语言的好书。
本书给出的所有模型都已经在Solaris系统上通过测试和仿真。所有图中综合出的
逻辑,是先手工将SystemC模型转化为等价的Verilog描述,然后用AmbitBuildGates综
合工具综合Verilog模型而得到的。
SystemC的前景
SystemC这门语言还在发展变化之中——它仍将继续以很快的速度发展,直至成为
IEEE标准。即使到了那个时候,我希望它作为有用的标准仍将继续发展下去。开发SystemC 2.X、3.0和4.0发行版本的计划已经制订完毕。2.X版本将包括分叉/汇合
(fork/join)、行为层次的中断/异常中止、性能模型支持以及定时规约支持。3.X版本将
支持抽象RTOS建模和调度程序建模。4.X版本将支持数模混合信号系统建模。
致谢
十分感谢以下人员对本书作出的贡献,他们不仅审阅了初稿,还提出了很多建设性的
意见和崭新的思路,从而使本书有了显著的改进。
Mike Baird
AbhijitGhosh
Thorsten Groetker
Jelf Hantgen
Kurt Heinz
Sven Heithecker
Xiaoyan Huang
MartinJanssen
M.N.V.Satya Kiran
David Long
Grant Martin
Dale Mehl
SanjiVNarayan
Smail Niar
Bernhard Niemann
Stuart Swan
Kartik Talsania
Punitha Thandapani
Yves Vanderperren
Jean Witinski
由衷感谢!
最后,还要说的是,如果没有我的妻子Geetha以及三个孩子Arvind、Vinay和Vish—
nu的支持,就不可能有本书的问世。
欢迎对本书提出任何指正和建议,请发电子邮件至jbhasker@cadence.com或通过
我的出版商与我联系。