第1章 电子系统设计方法学和系统级描述语言概述 1
1.1 片上系统对设计描述语言的要求 1
1.2 传统硬件描述语言Verilog HDL和VHDL 2
1.3 SystemC的历史 3
1.4 SystemC到底是什么 4
1.5 基于SystemC的设计流程 5
1.6 一个“Hello,SystemC!”建模实例 5
1.7 SystemC的系统描述能力 6
1.8 SystemC的开发工具 9
1.9 使用Visual C++编辑和编译SystemC设计 9
1.10 利用ModelSim查看SystemC产生的波形文件 12
习题 14
第2章 SyetemC基本语法 15
2.1 模块 15
2.1.1 模块的定义 15
2.1.2 模块的端口 16
2.1.3 模块的信号 17
2.1.4 位置关联 18
2.1.5 名字关联 21
2.1.6 模块内部数据 22
2.1.7 模块的构造函数 23
2.1.8 模块的析构函数 25
2.2 端口和信号 26
2.2.1 端口和信号的基本概念 26
2.2.2 端口和信号的读写 27
2.2.3 端口和信号类型 28
2.2.4 端口和信号的多驱动处理 29
2.2.5 端口和信号的绑定 31
2.2.6 SystemC时钟模型 31
2.2.7 SystemC时间模型 33
2.3 基本数据类型 34
2.3.1 sc_bit和sc_logic数据类型 35
2.3.2 固定精度整型数据类型sc_int和sc_uint 36
2.3.3 任意精度整型数据类型sc_bigint和sc_biguint 39
2.3.4 任意长度比特和逻辑向量 41
2.3.5 用户自定义类型 43
2.4 定点数据类型 43
2.4.1 SystemC定点数据类型 43
2.4.2 定点数据的字长和整数部分字长 44
2.4.3 定点数据的量化模式 45
2.4.4 量化模式SC_RND 46
2.4.5 量化模式SC_RND_ZERO 46
2.4.6 量化模式SC_RND_MIN_INF 47
2.4.7 量化模式SC_RND_INF 48
2.4.8 量化模式SC_RND_CONV 49
2.4.9 量化模式SC_TRN 50
2.4.10 量化模式SC_TRN_ZERO 50
2.4.11 定点数据的溢出模式 51
2.4.12 溢出模式SC_SAT 52
2.4.13 溢出模式SC_SAT_ZERO 52
2.4.14 溢出模式SC_SAT_SYM 53
2.4.15 溢出模式SC_WRAP 54
2.4.16 溢出模式SC_WRAP_SM 57
2.4.17 定点数据类型支持的运算符 58
2.4.18 定点数据类型的状态信息 59
2.4.19 将定点数据类型转换为字符串 59
2.4.20 一个定点FIR滤波器设计实例 60
2.5 进程 61
2.5.1 SystemC进程基础 61
2.5.2 方法进程SC_METHOD 62
2.5.3 线程进程SC_THREAD 63
2.5.4 钟控线程进程 65
2.5.5 wait_until()、wait()和next_trigger() 68
2.5.6 watching结构 70
2.5.7 局部watching 71
2.6 仿真与波形跟踪 73
2.6.1 SystemC设计的顶层函数sc_main() 73
2.6.2 仿真控制 74
2.6.3 SystemC波形跟踪概述 76
2.6.4 创建和关闭波形跟踪文件 77
2.6.5 跟踪标量型变量和信号 77
2.6.6 跟踪聚合型变量和信号 78
2.6.7 仿真和波形跟踪实例 79
习题 80
第3章 寄存器传输级SystemC设计 82
3.1 SystemC寄存器传输级设计和综合 82
3.1.1 什么是综合 82
3.1.2 为什么要用SystemC进行RTL建模 83
3.2 RTL风格的SystemC编程 84
3.2.1 定义模块和进程 84
3.2.2 创建模块 85
3.2.3 定义敏感表 86
3.2.4 信号和变量的读写 88
3.3 SystemC的可综合语言子集和可综合数据类型 90
3.3.1 可综合语言子集详解 90
3.3.2 可综合的数据类型详解 93
3.3.3 可综合修改建议 97
3.4 可综合RTL编程参考实例 97
3.4.1 寄存器建模 97
3.4.2 三态逻辑建模 107
3.4.3 组合逻辑建模 109
3.4.4 有限状态机建模 112
习题 118
第4章 SystemC行为建模 120
4.1 行为级建模的目的 120
4.2 接口、端口和通道的基本概念 120
4.3 接口 122
4.3.1 接口的定义 122
4.3.2 存储器接口实例 123
4.3.3 接口基类sc_interface 124
4.4 端口 126
4.4.1 自定义端口 126
4.4.2 一个端口实例 127
4.4.3 端口基类sc_port<IF,N> 130
4.4.4 一个连接到多个接口的端口实例 131
4.4.5 直接通道调用 133
4.5 通道基础 136
4.5.1 端口与通道的关联 136
4.5.2 通道的同步规则 138
4.5.3 静态规则检查 138
4.5.4 动态规则检查 140
4.5.5 通道的属性 141
4.6 基本通道 141
4.6.1 sc_signal<T>、sc_signal_rv<T>和sc_buffer<T> 142
4.6.2 sc_mutex 144
4.6.3 sc_fifo<T> 146
4.6.4 sc_semaphore 148
4.7 分层通道 150
4.7.1 分层通道的定义 150
4.7.2 一般分层通道 151
4.7.3 特殊分层通道 158
4.8 系统建模中的分层模型 158
4.8.1 系统建模中通信的抽象层次 158
4.8.2 寄存器传输层 159
4.8.3 传输层 159
4.8.4 交易层 160
4.8.5 消息层 161
4.9 SystemC的交易级建模 162
4.9.1 交易的概念 162
4.9.2 嵌入式软件开发与交易级建模 162
4.9.3 交易级建模用于系统结构探索 163
4.9.4 SystemC交易级建模的特点 163
4.10 通信细化 164
4.10.1 通信细化的概念 164
4.10.2 一个通信细化实例 164
习题 170
第5章 SystemC的Master-Slave通信库 174
5.1 SystemC Master-Slave通信库综述 174
5.2 SystemC Master-Slave通信库的安装 175
5.3 功能级的Master-Slave通信库 175
5.3.1 一个Master-Slave通信的简单实例 175
5.3.2 串行信道sc_link_mp<T>和内嵌执行语法简介 178
5.3.3 主、从端口语法 179
5.3.4 从进程语法 180
5.3.5 多点通信中的内嵌执行语法 181
5.3.6 并行通信与主-从通信的结合 182
5.3.7 通信端口连接规则和实例 182
5.3.8 抽象端口类详解 184
5.4 总线周期精确级的Master-Slave通信库 188
5.4.1 利用总线协议进行通信细化 188
5.4.2 模块细化 188
5.4.3 信道细化 191
5.4.4 预定义的总线协议 195
5.4.5 端口追踪 197
5.4.6 用户自定义的总线协议 198
5.5 Master-Slave通信库实例 200
5.5.1 功能级的FIFO模型 200
5.5.2 BCA级的FIFO实例 206
习题 208
第6章 TLM设计实例——片上总线 210
6.1 片上总线系统概述 210
6.2 从设备接口 211
6.3 快速存储器的实现 213
6.4 慢速存储器的实现 215
6.5 通用串口的实现 217
6.6 总线主设备接口 221
6.7 总线主设备 222
6.8 总线的实现 223
6.8.1 直接接口的实现 224
6.8.2 非阻塞型接口的实现 224
6.8.3 阻塞型接口的实现 225
6.8.4 助手函数end_of_elaboration的实现 226
6.8.5 助手函数get_slave的实现 226
6.8.6 助手函数get_request的实现 227
6.8.7 助手函数get_next_request的实现 227
6.8.8 助手函数clear_locks的实现 228
6.8.9 助手函数handle_request的实现 228
6.9 仲裁器接口 230
6.10 仲裁器模块的定义 230
6.11 仲裁器策略的实现——函数arbitrate () 231
习题 232
第7章 SystemC与传统硬件描述语言VHDL/Verilog HDL的比较7.1 SystemC与传统硬件描述语言的关系 233
7.2 SystemC与VHDL的语法等效性 235
7.2.1 ENTITY、ARCHITECTURE与SC_MODULE之间的等效性 235
7.2.2 process与method之间的等效性 236
7.2.3 信号定义和端口声明 237
7.2.4 例化和端口映射 237
7.2.5 运算符 238
7.2.6 数据类型 239
7.3 SystemC与Verilog HDL的语法等效性 240
7.3.1 基本构成单元 240
7.3.2 进程 240
7.3.3 时间模型 241
7.3.4 分支控制语句 242
7.4 SystemC与VHDL/Verilog HDL等效的设计实例 242
7.4.1 异步复位的D触发器 242
7.4.2 移位寄存器 244
7.4.3 计数器 246
7.4.4 有限状态机 249
习题 257
8.1 SystemC验证标准 260
8.2 与SystemC验证方法学相关的术语 262
8.3 SystemC的验证标准 263
8.3.1 交易器建模的风格 264
8.3.2 动态并发性建模 267
8.3.3 交易处理和记录 269
8.3.4 受约束的随机数产生 271
8.3.5 SCV标准支持的其他用于功能验证的特性 272
8.4 验证实例 272
习题 278
9.1 利用SystemC_win编译和仿真SystemC设计 280
9.2 使用WaveViewer查看波形 281
9.3 MATLAB用于System算法模块的验证 283
9.3.1 将MATLAB作为SystemC验证程序的计算引擎 283
9.3.2 MATLAB作为计算引擎的例子 283
9.3.3 MATLAB作为I/O与SystemC验证程序通信 287
9.3.4 MATLAB作为验证I/O的例子 287
9.3.3 两种方法的优缺点 295
习题 295
附录 部分名词术语英汉对照 296
参考文献 299