内容简介
《ASIC设计与综合:使用Verilog进行RTL设计》全面介绍使用Verilog进行RTL设计的ASIC设计流程和综合方法。
《ASIC设计与综合:使用Verilog进行RTL设计》共20章,内容包括ASIC设计流程、时序设计、多时钟域设计、低功耗的设计考虑因素、架构和微架构设计、设计约束和SDC命令、综合和优化技巧、可测试性设计、时序分析、物理设计、典型案例等。《ASIC设计与综合:使用Verilog进行RTL设计》提供了大量的练习题和案例分析,可以帮助读者更好地理解和掌握所学的知识。
目录
目录
第1章概述1
1.1ASIC设计2
1.2ASIC的类型3
1.3抽象层次5
1.4设计实例8
1.5应该知道的内容9
1.6研制过程中的一些重要术语11
1.7总结11
第2章ASIC设计流程.13
2.1ASIC设计流程 14
2.2FPGA设计流程 21
2.3思考实例 22
2.4挑战 .23
2.5总结 .24
第3章设计基础 25
3.1组合逻辑设计 26
3.2逻辑结构理解和使用 27
3.3算术资源和面积 27
3.4数码转换器29
3.5选择器32
3.6级联选择器34
3.7解码器36
3.8.编码器38
3.9优先级编码器39
3.10ASIC设计方法41
3.11练习41
3.12总结42
第4章时序设计 43
4.1时序设计基本元件44
4.2阻塞和非阻塞赋值44
4.3基于锁存器的设计48
4.4基于触发器的设计50
4.5复位方法 52
4.6分频器 .55
4.7同步设计 58
4.8异步设计 59
4.9复杂设计的RTL设计和验证 59
4.10练习60
4.11总结61
第5章重要的设计考虑因素 63
5.1时序参数64
5.2亚稳态65
5.3时钟偏差65
5.4裕量69
5.5时钟延迟 69
5.6设计面积 70
5.7速度要求 70
5.8功耗要求 71
5.9什么是设计约束?72
5.10练习72
5.11总结73
第6章ASIC设计中重要的设计考虑因素75
6.1同步设计中的考虑76
6.2正时钟偏差对速度的影响77
6.3负时钟偏差对速度的影响78
6.4时钟和时钟的网络延迟79
6.5设计中的时序路径80
6.6频率的计算81
6.7片上变化83
6.8练习83
6.9总结84
第7章多时钟域设计85
7.1多时钟域系统设计的基本策略86
7.2多时钟域设计的问题 86
7.3架构设计策略88
7.4控制信号路径和同步 90
7.5多比特数据传输的挑战94
7.6数据路径同步器95
7.7总结98
第8章低功耗的设计考虑因素99
8.1低功耗设计介绍100
8.2功耗的来源101
8.3RTL设计阶段的功耗优化103
8.4降低动态功耗和静态功耗的技巧107
8.5低功耗设计架构和UPF109
8.6总结112
第9章架构和微架构设计113
9.1架构设计114
9.2微架构设计116
9.3在不同设计阶段使用文档116
9.4设计分区117
9.5多时钟域及时钟分组117
9.6架构调整和性能改进118
9.7处理器中微架构的调整策略118
9.8总结122
第10章设计约束和SDC命令123
10.1重要的设计概念125
10.2如何描述约束条件126
10.3设计挑战128
10.4综合过程中使用的重要SDC命令128
10.5约束验证132
10.6用于DRC、功耗和优化的命令133
10.7总结133
第11章通过RTL的微调实现设计的综合与优化135
11.1ASIC综合136
11.2综合指南137
11.3FSM设计与综合138
11.4复杂FSM控制器的策略139
11.5RTL调整如何在综合过程中发挥作用140
11.6使用RTL调整的综合优化技术144
11.7FPGA综合151
11.8总结152
第12.章综合和优化技巧153
12.1.介绍154
12.2使用DC进行综合155
12.3综合与优化流程156
12.4面积优化技术159
12.5设计分区和结构化161
12.6编译策略163
12.7总结164
第13章设计优化和场景165
13.1设计规则约束166
13.2时钟的定义和延迟167
13.3有用的综合和优化的命令169
13.4时序优化和性能改进172
13.5FSM优化 177
13.6解决保持时间违例 178
13.7报告命令 178
13.8多周期路径 181
13.9总结 182
第14章可测试性设计 183
14.1为什么需要DFT? 184
14.2测试设计中的故障 184
14.3测试185
14.4DFT过程中使用的策略 185
14.5扫描方法 187
14.6扫描链的插入 189
14.7DFT期间的挑战 189
14.8DFT流程和相关的命令 190
14.9避免DRC违例的扫描链插入规则 191
14.10总结 192
第15章时序分析193
15.1概述194
15.2时序路径194
15.3指定时序目标196
15.4时序报告197
15.5解决时序违例的策略199
15.6总结204
第16章物理设计205
16.1物理设计流程206
16.2基础及重要术语207
16.3布局和电源规划208
16.4电源规划209
16.5时钟树综合210
16.6单元放置和布线212
16.7布线213
16.8反.标215
16.9STA和版图数据的签收215
16.10总结215
第17章案例:处理器的ASIC实现217
17.1功能理解218
17.2架构设计中的策略219
17.3微架构的策略221
17.4RTL设计与验证中的策略223
17.5综合过程中使用的示例脚本224
17.6综合问题和修复224
17.7预布局的STA问题225
17.8物理设计问题227
17.9总结227
第18章可编程的ASIC技术229
18.1可编程ASIC230
18.2设计流程231
18.3现代FPGA结构与元件 .232
18.4RTL设计和验证 .235
18.5.FPGA综合238
18.6FPGA的物理设计241
18.7总结244
第19章原型设计245
19.1FPGA原型246
19.2原型设计中的综合策略247
19.3FPGA综合过程中的约束249
19.4重要的考虑和调整251
19.5用于FPGA综合的IOPAD252
19.6原型设计工具253
19.7总结254
第20章案例:IP设计与开发 255
20.1IP设计与开发 256
20.2选择IP时需要考虑的问题 .256
20.3IP设计中有用的策略 257
20.4基于多个FPGA的原型设计 259
20.5H.264编码器IP设计与开发 261
20.6ULSI和ASIC设计264
20.7总结265
附录267附录A268
附录B.270
试读
第1章 概述
电子设备的小型化源于1947年威廉 肖克利、巴丁和布拉顿在贝尔实验室(现在的AT&T)发明的**个双极结型晶体管,他们因此于1956年共同获得了诺贝尔物理学奖。而**块集成电路是德州仪器公司(TI)26岁的工程师杰克 基尔比发明的。
1963年,由于低功耗、高封装集成度和高速要求,CMOS器件的普及程度快速提高。
1965~1975年,戈登 摩尔提出了摩尔定律,即“集成电路上可容纳的晶体管数量每18~24个月翻一番”。戈登 摩尔发现的这一规律直到2015年
还是有效的。但是对于10nm以下工艺节点来说,这个规律可能需要修改一下。根据我的观察,在未来几十年,晶体管数量翻倍可能需要将近36个月。
本章将介绍ASIC的设计和流程,展示ASIC的类型、不同的抽象层次,以及一些有助于理解ASIC设计方法的示例。
1.1 ASIC设计
从1960年到2020年,我们见证了许多发展和设计变化。我们需要理解的是,ASIC设计到底是什么?可以想象一个几微米或几纳米的小正方形“空盒子”,设计团队需要将实现特定功能的电路集成在这个“空盒子”中,而实现这项工作的就是前端逻辑设计团队。
后端或物理设计团队则在特定工艺节点的芯片级进行版图规划和物理验证工作。
制造单位,即代工厂,批量生产和封装芯片,*初的几个样品将由设计公司测试,以获得预期的设计结果。
那么以上这些是如何实现的呢?所有与设计相关的工作都是由芯片设计人员在芯片设计的各个阶段利用电子设计与自动化(EDA)工具来完成的。各种流行的EDA工具主要来自Synopsys和Cadence,这些EDA工具广泛用于芯片设计中,可以提升预期的设计性能。
伴随着芯片功能的不断发展,需要理解诸如面积、速度和功耗等约束条件,而逻辑设计团队和物理设计团队的主要目标就是要理解模块级和顶层的约束,并尽可能采取更好的方法实现芯片期望的性能。
为了能够有一个大致的了解,这里我们假设有一个流水线处理器,可以实现诸如加、减、乘、除、异或、或、与和非等算术和逻辑操作。我们需要在更高的层次上去设想功能模块设计的复杂性,要对面积进行粗略的估计,我们需要考虑应该采用哪些约束,以及我们将能够实现什么。在设计刚开始的时候,我们只有模块的基本概念,但是随着对设计的进一步理解,我们将逐步深入到芯片架构阶段。
对于上述芯片的架构思想,其基本布局如图1.1所示,在随后的章节中,我们将进一步讨论设计流程、芯片架构及微架构等。
图1.1 基本的芯片布局
1.2 ASIC的类型
ASIC(application specific integrated circuit,专用集成电路)可以实现特定的应用功能,例如用于处理特定信息的处理器或者控制器。ASIC分为全定制ASIC和半定制ASIC,半定制ASIC又可分为基于标准单元的ASIC和基于门阵列的ASIC。
1. 全定制ASIC
全定制ASIC基于特定的工艺节点,从头开始进行设计,每一个单元都是按照工艺节点的需要进行设计的。这种设计方法对于大批量生产非常有用,例如设计微处理器和浮点处理器等,就可以使用全定制的设计流程进行设计。
全定制ASIC的优点主要体现在大批量生产上,可以提供更低的功耗、更高的速度和*少的逻辑门数。因为所有的单元都是基于期望的工艺节点进行设计,所以对于速度、面积和功耗的约束实际上是可以满足的。
全定制ASIC的缺点是设计周期较长,而且具有较高的一次性工程费用。
2. 基于标准单元的ASIC
在基于标准单元的ASIC的设计流程中,像与非门、异或门、或非门和触发器这些标准单元库中的单元在设计中会被经常使用。这种流程的好处在于它使用了预先定义和预先制造好的单元,例如RAM硬宏等,其中的晶体管和互连线都是定制的,也就是说所有的掩模层都是定制的。
相对于全定制ASIC,基于标准单元的ASIC的优点在于其设计周期更短,这主要是因为设计过程中使用的基于特定工艺节点的像微处理器和宏这样的标准单元都是已经预先验证过的。
但是,相对于基于门阵列的ASIC,基于标准单元的ASIC的缺点是一次性工程费用较高,并且每个设计都需要单*地制造掩模版。
图1.2是具有1个标准单元区与4个固定功能块的基于标准单元的ASIC。
图1.2 基于标准单元的ASIC
3. 基于门阵列的ASIC
在基于门阵列的ASIC中,预制的晶圆都是未连接的门阵列,也就是说,这样的晶圆对于所有的设计都是通用的。这种基于门阵列的ASIC又分为通道门阵列、无通道门阵列和结构化门阵列三种。
(1)通道门阵列:在这种ASIC中,互连使用的是基本单元行之间预定义的空隙,如图1.3所示。
(2)无通道门阵列:在这种ASIC中,一些顶层掩模层是定制的,如图1.4所示。因为同一块晶圆可以被多个设计使用,所以这种ASIC*大的优点就在于其更低的一次性工程费用,另一个主要优势就是周转周期短。无通道门阵列*大的缺点是集成度较低、容量较小、设计的优化程度较低。
图1.3通道门阵列
图1.4无通道门阵列
(3)结构化门阵列:这种ASIC的任务就是将设计映射到构建块的单元库中,并且将它们按照需要连接起来。结构化门阵列的主要特点是组件“几乎”通过各种预先定义的配置连接在一起,这样做的好处是大大缩短了周转时间。结构化门阵列的优点在于其较低的一次性工程费用、较低的复杂度、较低的功耗、不错的性能和更短的上市时间。结构化门阵列的缺点是,由于使用预制的设计单元,所以团队需要对设计约束有更深入的理解。
1.3 抽象层次
设计按照不同的抽象层次可以分为功能设计、逻辑设计、门级设计和开关级设计。本节详细讨论设计中的这些抽象层次。
1. 功能设计
假设我们要设计一个芯片,那么**个想法就是从产品的构思中提取芯片的功能。功能设计基本上来自于功能规格说明,团队成员可以创建对应的高级和低级文档,并且采用C或者C++等高级语言描述功能。例如H.264编码器的设计,功能设计团队可以参考如下描述,使用高级语言的方式创建对应的黄金参考模型:
(1)需要处理的帧类型。
(2)支持的框架结构。
(3)预计涉及的块和功能。
(4)需要使用的量化和转换算法。
(5)熵编码方法。
如果期望的功能已经被验证,那么该设计可以作为黄金参考模型在整个设计中使用。
2. 逻辑设计
逻辑设计团队只有了解了芯片的架构和划分机制之后,才能完成RTL(register-transfer level,寄存器传输级)设计。专业团队使用VHDL、Verilog和SystemVerilog等HDL(hardware description language,硬件描述语言)进行模块和顶层的RTL设计和验证。下面是使用HDL进行RTL设计的优势:
(1)HDL支持并行和顺序结构。
(2)HDL支持时间的概念。
(3)HDL支持使用input、output和inout描述接口和端口。
(4)HDL支持边沿和电平敏感的设计结构。
关于RTL设计和验证更详细的内容可以参考本书第3章和第4章,关于逻辑设计流程的内容将在第2章讨论。
下面的示例是使用Verilog中的非阻塞赋值语句描述的一个两位移位寄存器的RTL设计。
示例1.1 使用Verilog描述的RTL设计
module non_blocking_assignments (
input data_in,clk,reset_n,
output reg data_out
);
reg tmp;
always @(posedge clk or negedge reset_n) begin
if (~reset_n) begin
{data_out, tmp} <= 2'b00;