第1章 前言 1
1.1 为什么要发展新的设计和验证语言 1
1.2 SystemC的历史 3
1.3 SystemC的本质 6
1.4 SystemC的核心价值 7
1.5 虚拟原型 8
1.6 ESL设计流程 8
1.7 事务处理级建模——ESL的关键 9
1.8 一个“Hello,SystemC!”建模实例 10
1.9 一个二输入与非门建模实例 11
1.10 本章小结 14
1.11 习题 14
第2章 SystemC基本语法 15
2.1 从一个典型的SystemC设计开始 15
2.2 SystemC头文件 16
2.3 模块 17
2.3.1 模块的定义 17
2.3.2 模块的构造函数和析构函数 18
2.3.3 模块内部数据 20
2.4 端口和信号 20
2.4.1 端口和信号的定义 20
2.4.2 △延迟 22
2.4.3 端口和信号的多驱动处理 23
2.4.4 端口和信号的绑定 25
2.5 SystemC时钟和时间模型 31
2.6 基本数据类型 33
2.6.1 sc_bit和sc_logic数据类型 34
2.6.2 固定精度整型数据类型sc_int和sc_uint 35
2.6.3 任意精度整型数据类型sc_bigint和sc_biguint 38
2.6.4 任意长度比特和逻辑向量 40
2.6.5 用户自定义类型 41
2.7 定点数据类型 42
2.8 进程 44
2.8.1 SystemC进程基础 45
2.8.2 方法进程SC_METHOD 45
2.8.3 线程进程SC_THREAD 46
2.8.4 钟控线程进程 47
2.8.5 wait()和next_trigger() 49
2.8.6 dont_initialize()和sensitive 51
2.9 仿真与波形跟踪 52
2.9.1 SystemC设计的顶层函数sc_main() 52
2.9.2 仿真控制 53
2.9.3 SystemC波形跟踪概述 54
2.9.4 创建和关闭波形跟踪文件 54
2.9.5 跟踪标量型变量和信号 55
2.9.6 跟踪聚合型变量和信号 55
2.9.7 仿真和波形跟踪实例 56
2.10 SystemC信息和差错报告机制 57
2.11 SystemC中的一些杂散内容 60
2.12 本章小结 61
2.13 习题 62
第3章 SystemC行为建模语法 65
3.1 什么是TLM 65
3.2 TLM相关语法 65
3.3 接口 66
3.3.1 接口的定义 66
3.3.2 存储器接口实例 67
3.3.3 接口基类sc_interface 69
3.4 端口 71
3.4.1 自定义端口 71
3.4.2 一个端口实例 71
3.4.3 端口基类sc_port〈IF,N〉 74
3.4.4 一个连接到多个接口的端口实例 75
3.4.5 直接通道调用 77
3.5 通道基础 81
3.5.1 端口与通道的关联 81
3.5.2 通道的同步规则 83
3.5.3 静态规则检查 83
3.5.4 动态规则检查 85
3.5.5 通道的属性 86
3.6 基本通道 86
3.6.1 sc_signal〈T〉、sc_signal_rv〈T〉和sc_buffer〈T〉 87
3.6.2 sc_mutex 89
3.6.3 sc_fifo〈T〉 91
3.6.4 sc_semaphore 94
3.6.5 sc_event 95
3.6.6 sc_event_queue 96
3.7 分层通道 97
3.7.1 分层通道的定义 97
3.7.2 分层通道的实例 98
3.7.3 导出端口(SC_EXPORT) 106
3.8 动态创建进程 109
3.8.1 sc_spawn(…) 110
3.8.2 sc_spawn_options 110
3.8.3 SC_FORK和SC_JOIN 113
3.9 系统建模中的分层模型 115
3.9.1 系统建模中通信的抽象层次 115
3.9.2 寄存器传输层 116
3.9.3 传输层 116
3.9.4 事务层 117
3.9.5 消息层 118
3.10 SystemC的事务处理级建模初步 119
3.10.1 事务的概念 119
3.10.2 嵌入式软件开发与事务处理级建模 119
3.10.3 事务处理级建模用于系统结构探索 119
3.10.4 SystemC事务处理级建模的特点 120
3.11 通信细化 120
3.11.1 通信细化的概念 120
3.11.2 一个通信细化实例 121
3.12 本章小结 127
3.13 习题 128
第4章 SystemC事务处理级建模库 131
4.1 TLM2.0基本概念 131
4.1.1 概述 131
4.1.2 松散定时建模 133
4.1.3 近似定时建模 134
4.1.4 近似定时建模和松散定时建模的使用 134
4.1.5 发起者、目标、套接字和桥 135
4.1.6 DMI和调试传送接口 136
4.1.7 合并接口和套接字 136
4.1.8 名字空间和头文件 136
4.1.9 基础协议 137
4.2 通用净核类 137
4.2.1 为什么定义通用净核类 137
4.2.2 定义 138
4.2.3 构造、赋值和析构函数 142
4.2.4 通用净核对象的属性 143
4.2.5 大端和小端 147
4.3 阻塞传送接口 149
4.3.1 TLM2.0核心接口概述 149
4.3.2 阻塞传送接口定义 150
4.3.3 一般阻塞调用示例 151
4.3.4 时间解耦阻塞调用示例 151
4.3.5 量子时间阻塞调用示例 152
4.4 非阻塞传送接口 152
4.4.1 相位 152
4.4.2 基础协议类型 155
4.4.3 非阻塞传送接口定义 155
4.4.4 非阻塞传送接口使用示例 157
4.5 直接存储器接口 159
4.6 调试传送接口 161
4.7 合并的传送接口 162
4.8 发起者和目标套接字 163
4.8.1 发起者和目标套接字概述 163
4.8.2 发起者套接字定义 163
4.8.3 目标套接字定义 165
4.8.4 使用示例 167
4.9 预定义的套接字 170
4.9.1 TLM2.0预定义套接字预览 170
4.9.2 简单套接字 170
4.10 全局量子时间和量子看守者 174
4.11 一个松散定时目标模块建模实例 177
4.12 本章小结 185
4.13 习题 185
第5章 SystemC验证库 189
5.1 SystemC验证库概述 189
5.2 常用术语 190
5.3 基于事务的验证 190
5.3.1 顶层设计 190
5.3.2 接口定义 192
5.3.3 事务处理器 193
5.3.4 测试器 195
5.3.5 被测设计 197
5.4 数据内查 198
5.4.1 本章术语 198
5.4.2 数据扩展 199
5.4.3 复杂用户数据类型扩展 202
5.4.4 枚举数据类型扩展 204
5.5 约束的随机化 205
5.5.1 随机数的产生 205
5.5.2 简单随机化 207
5.5.3 带约束的随机化 207
5.5.4 加权随机化 210
5.6 变量和事务记录 212
5.6.1 变量记录 212
5.6.2 事务记录 213
5.7 SCV标准的其他内容 215
5.8 本章小结 215
5.9 习题 216
第6章 SystemC综合 217
6.1 基于C的高层次综合 217
6.1.1 C高层次综合示例 217
6.1.2 调度算法 221
6.1.3 寄存器分配 222
6.2 SystemC行为综合 222
6.2.1 概述 222
6.2.2 SystemC可综合子集 223
6.2.3 可综合的进程 223
6.2.4 套接字 225
6.2.5 循环处理和运算调度 229
6.3 SystemC体系结构综合介绍 230
6.3.1 什么是SystemC体系结构综合 230
6.3.2 多核处理器的发展 231
6.3.3 相关工作 232
6.4 SystemC优化的进程阵列 234
6.4.1 体系结构 234
6.4.2 事件处理单元 235
6.4.3 互斥量和信号量单元 235
6.4.4 双向的输入输出队列 236
6.4.5 动态进程创建单元 237
6.5 基于SOTA的SystemC体系结构综合 241
6.6 SystemC体系结构综合案例 244
6.6.1 案例1 244
6.6.2 案例2 250
6.7 本章小结 254
6.8 习题 254
第7章 SystemC定点数据类型 255
7.1 定点数据的量化模式介绍 255
7.2 量化模式SC_RND 255
7.3 量化模式SC_RND_ZERO 256
7.4 量化模式SC_RND_MIN_INF 257
7.5 量化模式SC_RND_INF 258
7.6 量化模式SC_RND_CONV 259
7.7 量化模式SC_TRN 260
7.8 量化模式SC_TRN_ZERO 260
7.9 定点数据的溢出模式 261
7.10 溢出模式SC_SAT 261
7.11 溢出模式SC_SAT_ZERO 262
7.12 溢出模式SC_SAT_SYM 263
7.13 溢出模式SC_WRAP 264
7.14 溢出模式SC_WRAP_SM 266
7.15 定点数据类型支持的运算符 267
7.16 定点数据类型的状态信息 268
7.17 将定点数据类型转换为字符串 269
7.18 一个定点FIR滤波器设计实例 270
7.19 本章小结 270
7.20 习题 271
第8章 SystemC应用实例 273
8.1 回到“Hello,SystemC” 273
8.2 串口原理 275
8.3 串口寄存器定义 276
8.3.1 分频系数 276
8.3.2 发送和接收寄存器 276
8.3.2 接收控制寄存器 277
8.4 Wishbone总线简介 277
8.4.1 概述 277
8.4.2 接口信号定义 279
8.4.3 互联类型 282
8.4.4 总线周期 284
8.4.5 单次读/写周期 285
8.4.6 块读周期 287
8.4.7 块写周期 289
8.5 处理器的电子系统级总线功能模型 290
8.5.1 符合Wishbone标准的总线事务处理适配接口 291
8.5.2 符合Wishbone标准的总线事务处理适配器 292
8.5.3 软件的事务处理级行为 294
8.5.4 事务处理级处理器的顶层模块 295
8.6 串口的设计 297
8.6.1 设计文件列表 297
8.6.2 发送模块 298
8.6.3 接收模块 299
8.6.4 Wishbone接口模块 300
8.6.5 发送和接收FIFO 302
8.6.6 顶层模块 303
8.7 SystemC和Verilog混合仿真 303
8.8 本章小结 304
8.9 习题 304