华信教育资源网
敏捷硬件开发语言Chisel与数字系统设计(第2版)
丛   书   名: 集成电路科学与工程系列教材  西安交通大学研究生“十四五”规划精品系列教材
作   译   者:梁峰 等 出 版 日 期:2026-05-01
出   版   社:电子工业出版社 维   护   人:王晓庆 
书   代   号:G0526280 I S B N:9787121526282

图书简介:

集成电路设计复杂度的攀升使传统硬件描述语言的局限凸显,Chisel凭借高层次抽象与敏捷特性成为产业的核心支撑。本书紧跟Chisel 7.x与CIRCT编译框架进展,优化内容体系、强化工程实践,契合芯片自主创新需求,为读者提供从理论到工业级设计的完整指引。全书共13章,形成了知识闭环:第1章奠定Chisel和Scala认知与环境基础;第2~3章详解Scala语法、Chisel 7.3配置及数据类型;第4~6章覆盖硬件类型使用、控制结构适配及标准库原语调用;第7~9章阐述Verilog生成、黑盒衔接、多时钟域设计及代码复用技巧;第10章解决命名管理、版本迁移等实践痛点;第11~13章通过处理器设计、流控体系及工业案例,呈现复杂系统设计全流程。本书提供配套的电子课件PPT、课后练习参考答案、教学大纲、程序源代码及相关工程案例源码等。
定价 69.0
您的专属联系人更多
关注 评论(0) 分享
配套资源 图书内容 样章/电子教材 图书评价
  • 配 套 资 源

    本书资源

    会员上传本书资源

  • 图 书 内 容

    内容简介

    集成电路设计复杂度的攀升使传统硬件描述语言的局限凸显,Chisel凭借高层次抽象与敏捷特性成为产业的核心支撑。本书紧跟Chisel 7.x与CIRCT编译框架进展,优化内容体系、强化工程实践,契合芯片自主创新需求,为读者提供从理论到工业级设计的完整指引。全书共13章,形成了知识闭环:第1章奠定Chisel和Scala认知与环境基础;第2~3章详解Scala语法、Chisel 7.3配置及数据类型;第4~6章覆盖硬件类型使用、控制结构适配及标准库原语调用;第7~9章阐述Verilog生成、黑盒衔接、多时钟域设计及代码复用技巧;第10章解决命名管理、版本迁移等实践痛点;第11~13章通过处理器设计、流控体系及工业案例,呈现复杂系统设计全流程。本书提供配套的电子课件PPT、课后练习参考答案、教学大纲、程序源代码及相关工程案例源码等。

    图书详情

    ISBN:9787121526282
    开 本:16(185*260)
    页 数:280
    字 数:448

    本书目录

    目    录
    第1章  新型敏捷硬件开发语言——Chisel和Scala	1
    1.1  最好的宿主——什么是Scala	1
    1.2  敏捷开发——什么是Chisel	1
    1.3  Scala入门——让你的代码跑起来	3
    1.3.1  Scala的安装方法	3
    1.3.2  使用Scala解释器	4
    1.3.3  运行Scala脚本	4
    1.3.4  编译非脚本文件	5
    1.3.5  使用IDEA开发Scala项目	5
    1.3.6  总结	7
    1.4  章节安排	7
    1.5  芯片自主创新:历史传承、产业实践与技术路径	8
    1.5.1  古代工程技术中的系统思维	8
    1.5.2  芯片产业技术实践的多维观察	8
    1.5.3  Chisel学习与工程实践方法	9
    1.6  参考文献	9
    1.7  课后练习	9
    第2章  Chisel入门与Scala变量函数基础	11
    2.1  Scala变量定义与基本类型	11
    2.1.1  变量定义的本质与规则	11
    2.1.2  Scala的基本类型体系	13
    2.1.3  函数及其多种形态	15
    2.2  Chisel 7.3开发环境搭建	22
    2.2.1  环境要求与软件版本	22
    2.2.2  安装步骤	23
    2.2.3  项目结构与配置	24
    2.2.4  开发环境测试	25
    2.3  Chisel 7.3的核心特性与编译流程	26
    2.3.1  Chisel 7.3的包结构	26
    2.3.2  编译流程详解	26
    2.3.3  为什么使用SystemVerilog	27
    2.3.4  编译API详解	28
    2.3.5  多时钟域处理	28
    2.3.6  常见问题与解决方案	29
    2.4  CIRCT后端与编译优化	30
    2.4.1  CIRCT后端简介	30
    2.4.2  firtool工具详解	31
    2.4.3  与传统Chisel 3.x流程的对比	31
    2.5  总结	32
    2.6  课后练习	33
    第3章  Chisel数据类型与Scala集合应用	35
    3.1  Chisel数据类型概述	35
    3.2  Chisel数据类型层次结构	35
    3.3  基本数据类型	36
    3.3.1  Bits抽象类型	36
    3.3.2  UInt与SInt	37
    3.3.3  Bool类型	37
    3.3.4  Clock和Reset	38
    3.4  复合数据类型	39
    3.4.1  Bundle	39
    3.4.2  Vec	40
    3.4.3  MixedVec	41
    3.5  类型转换	41
    3.5.1  UInt与SInt的相互转换	41
    3.5.2  Bool与UInt的相互转换	42
    3.5.3  类型转换时的宽度处理	42
    3.6  操作符	42
    3.7  宽度推断	45
    3.7.1  宽度推断规则详解	45
    3.7.2  强制指定宽度	46
    3.7.3  宽度控制的最佳实践	46
    3.7.4  DontCare的使用	46
    3.8  Scala集合在Chisel中的应用	46
    3.8.1  数组与数组缓冲	47
    3.8.2  列表与列表缓冲	48
    3.8.3  元组	49
    3.8.4  映射与集合	49
    3.8.5  Scala集合与Chisel Vec的对比	50
    3.9  总结	51
    3.10  课后练习	51
    第4章  Chisel硬件设计中的操作、控制与分层	53
    4.1  基础硬件操作:构建电路的“原子部件”	53
    4.1.1  硬件类型体系与核心特性	53
    4.1.2  硬件赋值的核心规则	59
    4.2  Scala控制结构:组织硬件逻辑的“工具”	59
    4.2.1  条件控制结构:硬件的“分支逻辑”	60
    4.2.2  循环控制结构:硬件的“重复逻辑”	62
    4.2.3  异常与作用域控制:硬件的“安全性保障”	65
    4.3  Layers概念:复杂电路的“分层抽象”	67
    4.3.1  Layers的核心思想与原则	67
    4.3.2  Layers的分层模型与实现步骤	68
    4.3.3  Layers的核心优势与最佳实践	71
    4.3.4  Layers的实际应用场景	72
    4.4  总结	78
    4.5  课后练习	78
    第5章  Chisel中的面向对象设计与类型系统解析	81
    5.1  Scala面向对象编程基础	81
    5.1.1  类与对象的定义	81
    5.1.2  构造方法:主构造与辅助构造	83
    5.1.3  继承与多态	84
    5.1.4  单例对象与伴生对象	86
    5.2  Scala类型系统核心:参数化与抽象成员	87
    5.2.1  类型参数化(泛型)	87
    5.2.2  型变注解:协变、逆变与不变	89
    5.2.3  抽象成员	91
    5.3  从Scala到Chisel:面向对象硬件设计实践	94
    5.3.1  Chisel模块的类封装	94
    5.3.2  硬件接口的Bundle封装	96
    5.3.3  泛型在Chisel中的应用:参数化硬件	98
    5.3.4  继承与特质:硬件功能复用	101
    5.4  总结	103
    5.5  课后练习	103
    第6章  Chisel硬件设计原语与高级生成器	106
    6.1  多路选择器:组合逻辑的核心	106
    6.1.1  基本二选一:Mux	106
    6.1.2  多条件与查找表:MuxCase与MuxLookup	106
    6.1.3  独热码与优先级:Mux1H与PriorityMux	108
    6.2  优先编码器:从多路信号到编码索引	109
    6.2.1  PriorityEncoder:输出二进制索引	109
    6.2.2  PriorityEncoderOH:输出独热码	109
    6.3  仲裁器:多个生产者共享一个通道	110
    6.3.1  Decoupled 接口与 ready/valid 握手	110
    6.3.2  Arbiter:固定优先级仲裁	111
    6.3.3  RRArbiter:轮询公平仲裁	111
    6.4  队列 Queue:基于ready/valid的同步FIFO	112
    6.4.1  Queue 的构造与接口	112
    6.4.2  工厂方法:一行接好FIFO	113
    6.5  ROM与RAM:构造可综合存储器	113
    6.5.1  VecInit构造组合ROM	113
    6.5.2  Mem:组合读、同步写	114
    6.5.3  SyncReadMem:同步读、同步写	115
    6.6  常用位操作与寄存器小工具	115
    6.6.1  PopCount与Reverse:统计与翻转	115
    6.6.2  UIntToOH与OHToUInt:编码转换	116
    6.6.3  RegEnable与ShiftRegister:条件更新与时序对齐	116
    6.7  高级生成器:Counter、LFSR与ChiselEnum	116
    6.7.1  Counter:参数化计数器生成器	117
    6.7.2  LFSR:线性反馈移位寄存器	117
    6.7.3  ChiselEnum:类型安全的状态机枚举	118
    6.8  总结	119
    6.9  课后练习	119
    第7章  Chisel设计的生成、测试与优化	121
    7.1  生成Verilog HDL代码	121
    7.1.1  核心生成工具:CIRCT Stage	121
    7.1.2  基础生成示例:全加器	122
    7.1.3  灵活配置生成选项	124
    7.1.4  命令行动态传参	124
    7.2  参数化设计与生成	125
    7.2.1  参数化设计:n位加法器	125
    7.2.2  参数化模块的Verilog生成	126
    7.3  现代测试框架:ChiselSim	127
    7.3.1  环境配置	127
    7.3.2  核心API介绍	128
    7.3.3  基础测试用例:n位加法器测试	128
    7.3.4  运行测试	130
    7.3.5  可重用的刺激模式	130
    7.4  波形生成与可视化	132
    7.4.1  生成VCD波形文件	132
    7.4.2  查看波形文件	133
    7.4.3  其他波形格式支持	133
    7.5  高级测试技术	134
    7.5.1  参数化测试	134
    7.5.2  自定义命令行选项	135
    7.5.3  模拟器后端选择	137
    7.6  形式化验证入门	138
    7.6.1  形式化验证基础概念	138
    7.6.2  Chisel中的断言使用	138
    7.6.3  assume和cover的使用	139
    7.6.4  形式化验证工具集成	141
    7.7  FileCheck:直接检查生成的代码	141
    7.7.1  FileCheck基础	141
    7.7.2  FileCheck API	141
    7.7.3  生成代码用于FileCheck	141
    7.7.4  FileCheck测试示例	142
    7.8  性能分析与优化	143
    7.8.1  RTL代码分析	143
    7.8.2  性能瓶颈识别	144
    7.8.3  常见优化技术	145
    7.8.4  综合工具集成与报告分析	147
    7.9  优化生成与测试流程	148
    7.9.1  代码生成优化	148
    7.9.2  测试效率优化	149
    7.9.3  持续集成与自动化	149
    7.10  总结	150
    7.11  实践建议与最佳实践	150
    7.11.1  项目组织建议	151
    7.11.2  调试技巧	151
    7.11.3  常见陷阱与解决方案	152
    7.11.4  性能优化清单	153
    7.11.5  工具链配置建议	153
    7.11.6  文档化建议	154
    7.11.7  学习资源推荐	155
    7.12  课后练习	156
    第8章  黑盒与多时钟域设计	158
    8.1  黑盒	158
    8.1.1  例化黑盒	158
    8.1.2  导入Verilog文件	160
    8.1.3  inout端口处理	162
    8.2  多时钟域设计	163
    8.2.1  无隐式端口的模块(RawModule)	163
    8.2.2  定义时钟域和复位域	163
    8.2.3  复位类型	165
    8.2.4  时钟负沿与低有效复位	165
    8.3  跨时钟域信号同步	166
    8.3.1  亚稳态问题	166
    8.3.2  双触发器同步器	166
    8.3.3  多位数据信号同步	167
    8.3.4  握手协议同步器	167
    8.3.5  异步FIFO深入分析	168
    8.3.6  多时钟域设计最佳实践	169
    8.4  综合应用示例	169
    8.5  总结	171
    8.6  课后练习	171
    第9章  Scala隐式机制与Chisel函数抽象	173
    9.1  Scala隐式机制基础	173
    9.1.1  隐式机制的核心规则	173
    9.1.2  隐式转换的三种应用场景	173
    9.1.3  隐式类:简化富包装类定义	174
    9.1.4  上下文界定:简化隐式参数声明	175
    9.2  Chisel中的函数抽象	175
    9.2.1  组合逻辑抽象为函数	175
    9.2.2  工厂方法简化模块例化	176
    9.2.3  Scala高阶函数简化硬件生成	177
    9.3  Chisel内置高级函数	178
    9.3.1  位操作函数	178
    9.3.2  计数与编码函数	179
    9.3.3  对数与查找表函数	179
    9.3.4  打印函数:调试与验证	180
    9.4  隐式机制与函数抽象的高级应用	181
    9.4.1  隐式类实现自定义硬件操作	181
    9.4.2  递归函数实现参数化延时模块	182
    9.5  总结	183
    9.6  课后练习	183
    第10章  Chisel工程化开发规范与版本迁移	186
    10.1  模块与信号命名管理	186
    10.1.1  模块重命名(desiredName)	186
    10.1.2  编译器插件:信号命名优化	187
    10.1.3  信号前缀与自定义命名	188
    10.2  参数化Bundle设计	190
    10.2.1  基本参数化Bundle	190
    10.2.2  多配置Bundle与实例复用	191
    10.3  定点数支持策略与Interval/FixedPoint说明	191
    10.3.1  基于整数缩放的定点编码	192
    10.3.2  FixedPoint/Interval:实验性与外部库说明	193
    10.4  断言(assert)	193
    10.4.1  断言的用法	193
    10.4.2  断言触发机制回顾	195
    10.4.3  断言的测试示例	195
    10.5  从早期Chisel工程升级至Chisel 7.3完整操作指南	196
    10.5.1  升级前的准备工作	196
    10.5.2  代码与构建配置的迁移	197
    10.5.3  利用Chisel 7.3的工程化特性做“顺手优化”	198
    10.5.4  升级完成后的自检	198
    10.6  总结	198
    10.7  课后练习	199
    第11章  riscv-mini	201
    11.1  riscv-mini简介	201
    11.2  数据通路	201
    11.3  riscv-mini的子模块	202
    11.3.1  ALU模块	202
    11.3.2  BrCond模块	203
    11.3.3  Cache模块	204
    11.3.4  Control模块	205
    11.3.5  CSR模块	206
    11.3.6  Imm Gen模块	207
    11.3.7  Instructions模块	207
    11.3.8  RegFile模块	208
    11.3.9  Datapath模块	208
    11.3.10  Core模块	209
    11.4  riscv-mini参数化机制	209
    11.4.1  Field[T]类	209
    11.4.2  View类	210
    11.4.3  Parameters类及其伴生对象	211
    11.4.4  Config类	212
    11.5  参数化机制的应用	212
    11.6  总结	217
    11.7  参考文献	217
    11.8  课后练习	218
    第12章  Chisel标准库深入与常用设计模式	219
    12.1  Ready-Valid协议:流控的基石与语义分层	219
    12.2  标准库核心组件:从队列到仲裁器	220
    12.3  工程化流水线设计:模板、反压与性能权衡	222
    12.3.1  通用流水线阶段模板	222
    12.3.2  性能权衡:吞吐率和延迟	223
    12.4  验证:让正确性可衡量	223
    12.4.1  功能测试与随机反压	223
    12.4.2  协议级断言与覆盖率	224
    12.5  代码风格与工程实践	224
    12.6  进阶主题与延伸阅读	225
    12.7  总结	225
    12.8  课后练习	225
    第13章  Chisel 实践与应用案例	227
    13.1  基于Chisel的神经网络加速器设计	227
    13.1.1  设计目标与架构选型	227
    13.1.2  输入/输出缓存设计	228
    13.1.3  MAC阵列与激活函数实现	230
    13.1.4  顶层模块集成与状态机控制	232
    13.1.5  参数化配置与代码复用	234
    13.1.6  性能优化策略	235
    13.1.7  Verilog生成与验证	235
    13.1.8  进阶拓展方向	236
    13.2  基于Verilator的混合语言仿真与验证方法学	238
    13.2.1  Chisel内置仿真框架与Verilator集成	238
    13.2.2  Verilator直接验证Chisel生成的Verilog	240
    13.2.3  混合仿真:Chisel与Verilog模块集成	243
    13.2.4  高级验证技术	245
    13.3  Constellation:工业级片上网络生成器	246
    13.3.1  NoC技术背景与设计挑战	246
    13.3.2  Constellation项目定位与特点	247
    13.3.3  工程结构与模块组织	247
    13.3.4  参数化配置体系	249
    13.3.5  仿真与功能验证	250
    13.3.6  综合与RISC-V生态集成	251
    13.3.7  Constellation项目总结	252
    13.4  系统级设计:香山Minjie与Chipyard Diplomacy	252
    13.4.1  生成式结构建模	252
    13.4.2  可配置架构生成	254
    13.4.3  香山Minjie开发平台	256
    13.4.4  Chipyard Diplomacy机制	257
    13.4.5  系统级设计方法总结	260
    13.5  总结与展望	260
    13.5.1  本章核心内容回顾	260
    13.5.2  全书知识体系总结	261
    13.5.3  Chisel学习建议与实践路径	262
    13.5.4  Chisel的美好未来	263
    参考文献	266
    展开

    前     言

    前    言
    从本书第1版出版到现在,数字芯片设计领域的技术演进速度远超预期。如今,主流芯片晶体管数量已达千亿量级,异构计算、存算一体等新架构层出不穷,传统硬件描述语言的效率瓶颈日益凸显,推动了以Chisel为代表的敏捷开发方法快速发展。短短几年间,Chisel已从3.x迭代到7.x,CIRCT编译框架走向成熟,RISC-V生态中基于Chisel的设计已覆盖从微控制器到高性能处理器的完整产品线。这些变化让我们下定决心修订本书——只有紧跟前沿,才能提供契合产业需求的知识工具。
    与第1版相比,本书主要在三个方面进行了改进。
    一是内容全面更新。替换Chisel 3.x旧案例,聚焦7.x核心特性,深入讲解CIRCT后端优化机制,新增多时钟域处理、定点运算优化等工业高频技术点,确保所学内容与主流开发流程一致。
    二是知识体系重新组织。摒弃“Chisel+Scala”割裂结构,将Scala的面向对象和函数式编程特性融入硬件设计,新增Layers分层设计、工程化命名规范等方法,帮助建立“用软件语法表达硬件逻辑”的系统认知。
    三是实践案例贴近工业。在保留经典案例的基础上,新增神经网络加速器、Constellation片上网络等实战项目,完整展示从模块编码到SoC集成的全过程。
    本书配套资源已升级,含电子课件PPT、课后练习参考答案、教学大纲、程序源代码、Chisel 7.x模板、CIRCT配置文件及工业案例源码,正版用户可扫描封底二维码查看相关资源,任课教师可登录华信教育资源网注册后免费下载,也可联系责任编辑(wangxq@phei.com.cn、010-88254113)索取。
    本书第1、2、3、13章由梁峰编写,第4~7章由雷冰洁编写,第8~11章由王旭辉编写,第12章由张国和编写。雷冰洁校对全书,梁峰统筹全局,全书由王旭辉统稿。
    衷心感谢各方支持:感谢加州大学伯克利分校Chisel团队的文档与社区答疑;感谢国内RISC-V工程师分享一线需求;特别感谢使用第1版的师生,你们的反馈是我们修订的动力;也感谢研究生江浩云、石可欣、张桂铭、刘奥等在CIRCT解析和代码验证中的投入,以及众多同学在调试与习题整理上的付出;同时感谢电子工业出版社编辑团队的专业支持。
    当前芯片自主创新是国家战略重点,敏捷开发是人才培养的关键基础。我们希望本书成为连接教学与产业的桥梁,助力更多人掌握Chisel,抓住数字芯片设计机遇。因技术更新快,加上我们水平有限,书中难免有所疏漏,欢迎通过电子邮箱(wangxq@phei.com.cn)指正。
    
    作  者  
    2025年12月
    
    展开

    作者简介

    梁峰,西安交通大学微电子学院教授,博士生导师,主要从事高级设计方法学、图像视频智能处理算法、机器学习算法的硬件实现、高性能计算架构、智能软硬件系统设计、存算一体化集成电路架构、智能化集成电路EDA方法等研究,具有机器视觉芯片、RISC CPU芯片、高性能DSP芯片等成功流片经验。主持承担了国家自然科学基金面上项目和青年项目、全军共用信息系统装备预研专用技术项目、航空科学基金项目、陕西省重点研发计划项目、陕西省自然科学基金项目,以及国内知名公司的企业横向课题。在IEEE TIP、IEEE TVLSI、IEEE TCAD、IEEE MWTL、IEEE TCSVT、IEEE TCAS-II、Signal Processing、Neurocomputing等国际权威期刊和重要会议上发表相关研究方向的学术论文60余篇,关键核心技术获国家发明专利授权10余项,出版学术专著7本,指导本科生、研究生参加国家级竞赛获奖三十余项。
  • 样 章 试 读
    本书暂无样章试读!
  • 图 书 评 价 我要评论
华信教育资源网