描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111588948
内容简介
本书为集成电路时序约束设计的指南,指导读者通过指定的时序要求,充分发挥IC设计的性能。本书内容包括受时序约束的关键环节的设计流程、综合时序分析、静态时序分析和布局布线等。本书首先详细讲解时序要求的概念,然后详细解释如何将其应用于设计流程中的特定阶段,后通过实践介绍在Synopsys约束设计下(SDC)业界领先约束的格式。
目 录
目 录
译者序
推荐序
前言
致谢一
致谢二
第1章 绪论 1
1.1 ASIC设计流程 1
1.2 FPGA设计流程 4
1.3 ASIC和FPGA设计流程中的时序约束 6
1.4 纳米级设计中的时序约束问题 6
1.5 小结 7
第2章 综合的基础知识 8
2.1 综合的解释 8
2.2 时序约束在综合中的作用 8
2.2.1 优化 9
2.2.2 输入重排序 9
2.2.3 输入缓冲 10
2.2.4 输出缓冲 11
2.3 综合中面临的普遍问题 11
2.3.1 设计划分 11
2.3.2 更新约束 12
2.3.3 多时钟设计 12
2.4 小结 12
第3章 时序分析与约束 14
3.1 静态时序分析 14
3.2 时序约束在STA中的作用 15
3.2.1 约束作为声明 16
3.2.2 约束作为断言 16
3.2.3 约束作为指令 16
3.2.4 约束作为异常 17
3.2.5 约束的角色变化 17
3.3 STA中的常见问题 18
3.3.1 无功能检查 18
3.3.2 无声明检查 18
3.3.3 要求正确 18
3.3.4 约束中的常见错误 19
3.3.5 好约束的特征 20
3.4 延迟计算与STA 21
3.5 时序路径 21
3.5.1 起点和终点 22
3.5.2 打断路径 23
3.5.3 功能路径与时序路径 23
3.5.4 时钟路径与数据路径 23
3.6 建立与保持 24
3.6.1 建立分析 24
3.6.2 保持分析 24
3.6.3 其他分析 25
3.7 裕度 25
3.8 片上变化 26
3.9 小结 27
第4章 通过Tcl扩展SDC 28
4.1 时序约束的历史 28
4.2 Tcl基础知识 29
4.2.1 Tcl变量 29
4.2.2 Tcl列表 30
4.2.3 Tcl表达式与运算符 31
4.2.4 Tcl的控制流语句 31
4.2.5 其他Tcl命令 33
4.3 SDC综述 33
4.3.1 时序约束 34
4.3.2 面积与功率约束 34
4.3.3 设计规则约束 34
4.3.4 接口约束 34
4.3.5 特定模式和配置约束 34
4.3.6 设计约束异常 35
4.3.7 其他命令 35
4.4 SDC中的设计查询 35
4.5 SDC作为标准 36
4.6 小结 36
第5章 时钟 37
5.1 时钟周期和频率 37
5.2 时钟沿和占空比 38
5.3 creat_clock 39
5.3.1 定义时钟周期 39
5.3.2 标识时钟源 39
5.3.3 命名时钟 40
5.3.4 指定占空比 40
5.3.5 同源多时钟 41
5.3.6 注释时钟 42
5.4 虚拟时钟 42
5.5 其他时钟特征 43
5.6 时钟规格的重要性 43
5.7 小结 44
第6章 生成时钟 45
6.1 时钟分频器 45
6.2 时钟乘法器 46
6.3 时钟门控 46
6.4 create_generated_clock 47
6.4.1 定义生成时钟的对象 47
6.4.2 定义生成时钟的源 48
6.4.3 时钟命名 48
6.4.4 设定生成时钟的特性 48
6.4.5 时钟沿位移 51
6.4.6 多个同源时钟 52
6.4.7 使能组合电路路径 53
6.5 生成时钟相关的注意事项 54
6.6 小结 54
第7章 时钟组 55
7.1 建立和保持时序检查 55
7.1.1 高速至低速时钟 56
7.1.2 低速至高速时钟 57
7.1.3 多个时钟于不同周期内同步 57
7.1.4 异步时钟 58
7.2 逻辑和物理独立时钟 58
7.3 串扰 59
7.4 set_clock_group 60
7.5 时钟组相关的注意事项 62
7.6 小结 62
第8章 其他时钟特性 63
8.1 过渡时间 63
8.2 set_clock_transition 64
8.3 偏斜和抖动 65
8.4 set_clock_uncertainty 65
8.4.1 内部时钟不确定度 66
8.4.2 交互时钟不确定度 66
8.5 时钟延迟 67
8.6 set_clock_latency 68
8.7 时钟路径的单边性 70
8.8 set_clock_sense 71
8.9 理想网络 72
8.10 小结 73
第9章 端口延迟 74
9.1 输入有效 74
9.1.1 小和有效时间 75
9.1.2 多时钟 75
9.1.3 理解输入信号的到达时间 76
9.2 输出要求 77
9.2.1 小和要求时间 78
9.2.2 多个参考事件 78
9.2.3 理解输出要求时间 79
9.3 set_input_delay 79
9.3.1 时钟规格 79
9.3.2 -level_sensitive 80
9.3.3 rise/fall 限定符 80
9.3.4 min/max限定符 81
9.3.5 -add_delay 81
9.3.6 时钟延迟 82
9.3.7 完成输入延迟约束 83
9.4 set_output_delay 83
9.4.1 时钟规格 83
9.4.2 -level_sensitive 83
9.4.3 rise/fall限定符 84
9.4.4 min/max限定符 84
9.4.5 -add_delay 84
9.4.6 时钟延迟 84
9.4.7 完成输出延迟约束 84
9.5 输入延迟和输出延迟之间的关系 84
9.6 时序分析实例 85
9.6.1 输入延迟:输入延迟 86
9.6.2 输入延迟:小输入延迟 87
9.6.3 输出延迟:输出延迟 87
9.6.4 输出延迟:小输出延迟 88
9.7 负延迟 89
9.8 小结 90
第10章 完整的端口约束 91
10.1 驱动能力 91
10.2 驱动单元 93
10.3 输入过渡 97
10.4 扇出数 98
10.5 扇出负载 98
10.6 负载 99
10.6.1 净电容 99
10.6.2 调整引脚负载 99
10.6.3 负载类型 100
10.6.4 负载和扇出负载 100
10.6.5 输入负载 101
10.7 小结 101
第11章 虚假路径 102
11.1 简介 102
11.2 set_false_path 102
11.3 路径规格 103
11.4 过渡过程规格 105
11.5 建立/保持规格
译者序
推荐序
前言
致谢一
致谢二
第1章 绪论 1
1.1 ASIC设计流程 1
1.2 FPGA设计流程 4
1.3 ASIC和FPGA设计流程中的时序约束 6
1.4 纳米级设计中的时序约束问题 6
1.5 小结 7
第2章 综合的基础知识 8
2.1 综合的解释 8
2.2 时序约束在综合中的作用 8
2.2.1 优化 9
2.2.2 输入重排序 9
2.2.3 输入缓冲 10
2.2.4 输出缓冲 11
2.3 综合中面临的普遍问题 11
2.3.1 设计划分 11
2.3.2 更新约束 12
2.3.3 多时钟设计 12
2.4 小结 12
第3章 时序分析与约束 14
3.1 静态时序分析 14
3.2 时序约束在STA中的作用 15
3.2.1 约束作为声明 16
3.2.2 约束作为断言 16
3.2.3 约束作为指令 16
3.2.4 约束作为异常 17
3.2.5 约束的角色变化 17
3.3 STA中的常见问题 18
3.3.1 无功能检查 18
3.3.2 无声明检查 18
3.3.3 要求正确 18
3.3.4 约束中的常见错误 19
3.3.5 好约束的特征 20
3.4 延迟计算与STA 21
3.5 时序路径 21
3.5.1 起点和终点 22
3.5.2 打断路径 23
3.5.3 功能路径与时序路径 23
3.5.4 时钟路径与数据路径 23
3.6 建立与保持 24
3.6.1 建立分析 24
3.6.2 保持分析 24
3.6.3 其他分析 25
3.7 裕度 25
3.8 片上变化 26
3.9 小结 27
第4章 通过Tcl扩展SDC 28
4.1 时序约束的历史 28
4.2 Tcl基础知识 29
4.2.1 Tcl变量 29
4.2.2 Tcl列表 30
4.2.3 Tcl表达式与运算符 31
4.2.4 Tcl的控制流语句 31
4.2.5 其他Tcl命令 33
4.3 SDC综述 33
4.3.1 时序约束 34
4.3.2 面积与功率约束 34
4.3.3 设计规则约束 34
4.3.4 接口约束 34
4.3.5 特定模式和配置约束 34
4.3.6 设计约束异常 35
4.3.7 其他命令 35
4.4 SDC中的设计查询 35
4.5 SDC作为标准 36
4.6 小结 36
第5章 时钟 37
5.1 时钟周期和频率 37
5.2 时钟沿和占空比 38
5.3 creat_clock 39
5.3.1 定义时钟周期 39
5.3.2 标识时钟源 39
5.3.3 命名时钟 40
5.3.4 指定占空比 40
5.3.5 同源多时钟 41
5.3.6 注释时钟 42
5.4 虚拟时钟 42
5.5 其他时钟特征 43
5.6 时钟规格的重要性 43
5.7 小结 44
第6章 生成时钟 45
6.1 时钟分频器 45
6.2 时钟乘法器 46
6.3 时钟门控 46
6.4 create_generated_clock 47
6.4.1 定义生成时钟的对象 47
6.4.2 定义生成时钟的源 48
6.4.3 时钟命名 48
6.4.4 设定生成时钟的特性 48
6.4.5 时钟沿位移 51
6.4.6 多个同源时钟 52
6.4.7 使能组合电路路径 53
6.5 生成时钟相关的注意事项 54
6.6 小结 54
第7章 时钟组 55
7.1 建立和保持时序检查 55
7.1.1 高速至低速时钟 56
7.1.2 低速至高速时钟 57
7.1.3 多个时钟于不同周期内同步 57
7.1.4 异步时钟 58
7.2 逻辑和物理独立时钟 58
7.3 串扰 59
7.4 set_clock_group 60
7.5 时钟组相关的注意事项 62
7.6 小结 62
第8章 其他时钟特性 63
8.1 过渡时间 63
8.2 set_clock_transition 64
8.3 偏斜和抖动 65
8.4 set_clock_uncertainty 65
8.4.1 内部时钟不确定度 66
8.4.2 交互时钟不确定度 66
8.5 时钟延迟 67
8.6 set_clock_latency 68
8.7 时钟路径的单边性 70
8.8 set_clock_sense 71
8.9 理想网络 72
8.10 小结 73
第9章 端口延迟 74
9.1 输入有效 74
9.1.1 小和有效时间 75
9.1.2 多时钟 75
9.1.3 理解输入信号的到达时间 76
9.2 输出要求 77
9.2.1 小和要求时间 78
9.2.2 多个参考事件 78
9.2.3 理解输出要求时间 79
9.3 set_input_delay 79
9.3.1 时钟规格 79
9.3.2 -level_sensitive 80
9.3.3 rise/fall 限定符 80
9.3.4 min/max限定符 81
9.3.5 -add_delay 81
9.3.6 时钟延迟 82
9.3.7 完成输入延迟约束 83
9.4 set_output_delay 83
9.4.1 时钟规格 83
9.4.2 -level_sensitive 83
9.4.3 rise/fall限定符 84
9.4.4 min/max限定符 84
9.4.5 -add_delay 84
9.4.6 时钟延迟 84
9.4.7 完成输出延迟约束 84
9.5 输入延迟和输出延迟之间的关系 84
9.6 时序分析实例 85
9.6.1 输入延迟:输入延迟 86
9.6.2 输入延迟:小输入延迟 87
9.6.3 输出延迟:输出延迟 87
9.6.4 输出延迟:小输出延迟 88
9.7 负延迟 89
9.8 小结 90
第10章 完整的端口约束 91
10.1 驱动能力 91
10.2 驱动单元 93
10.3 输入过渡 97
10.4 扇出数 98
10.5 扇出负载 98
10.6 负载 99
10.6.1 净电容 99
10.6.2 调整引脚负载 99
10.6.3 负载类型 100
10.6.4 负载和扇出负载 100
10.6.5 输入负载 101
10.7 小结 101
第11章 虚假路径 102
11.1 简介 102
11.2 set_false_path 102
11.3 路径规格 103
11.4 过渡过程规格 105
11.5 建立/保持规格
前 言
前 言在当今的深亚微米世界中,对于设计人员而言,时序已经成为开发专用集成电路(ASIC)或片上系统(SoC)的重要挑战。设计工程师在设计流程的不同阶段之间进行多次循环迭代,以满足时序要求。时序不仅是芯片的响应时间,还是芯片功能的一个组成部分,可以确保其能够与系统上其他元器件无缝地通信。这就提出了问题,什么是时序?如何指定它?本书是一本实践指南,有助于读者编写和理解集成电路设计中的时序约束。通过本书读者将学习到如何有效和正确地编写约束,以便实现IC或FPGA设计的期望性能,包括关于约束重用的注意事项。其覆盖范围包括受时序约束影响的设计流程的关键方面,有综合、静态时序分析以及布局布线。本书详细说明了指定时序要求所需要的概念,然后将其应用于设计流程中的特定阶段,所有这些都包含在Synopsys设计约束(SDC)的上下文中,SDC是业界领先的用于指定约束的格式。
我们经常从许多设计工程师那里听到有一些书中介绍了综合和静态时序分析等概念,这些概念涵盖了时序约束,但从来没有详细描述过。根据我们多年在时序特性描述、延迟计算、时序分析以及创建和验证约束等领域的工作,本书介绍了指定时序要求所需的概念。
本书结构下面是本书的结构安排。
第1~3章介绍时序分析的主题,包括其在设计周期背景下的需求。这些章节中的描述是与供应商、语言和格式无关的。
第4章提供Tcl语言的概述,因为SDC(Synopsys设计约束)是Tcl的扩展。本章还介绍SDC的概念。
可以将前4章看作入门部分。
第5~8章一同构成讨论时钟的部分,介绍如何应用与时钟相关的约束。这些章介绍各种时钟及其关系,以及如何在SDC中指定它们。
第9章和第10章介绍如何对其余的(非时钟)端口应用约束。有了这部分内容,就覆盖了所有的主要端口。
第11~13章介绍对时序异常的需求。这些章介绍如何在SDC中正确地指定异常。
第14章和第15章涉及更专业的话题,这些概念较少论及个别的约束。相反,它们深入了解设计团队是如何管理大量的约束的,因为它们在跨流程时从前端到后端,将完整的设计划分成电路单元,然后再整合各个电路单元。
第16章介绍一些其他的SDC命令,这些命令可能会对时序分析产生影响。
本书还有一些命令没有涵盖。但是,通过本书可以对时序分析和SDC有基本了解,用户可以轻松理解其余的任何命令,包括SDC未来版本中可能出现的任何扩展。
支持SDC的大多数工具通常还允许对SDC进行一些扩展,以便使用特定工具实现更高的准确性或更好的易用性。第17章概述针对Xilinx Vivado扩展的SDC时序约束。
其他资源SDC是由Synopsys公司发布的开源版本。SDC文档和解析器可从Synopsys网站免费下载。
意见反馈我们已尽努力来提供准确的概念描述。也得到了业内一些专家的帮助,以检查素材的准确性。但是,如果你发现一些描述混乱或有错误的地方,请告知我们。
祝阅读愉快!
Sanjay Churiwala Sridhar Gangadharan 致 谢 一我要感谢Mark Aaldering,他首先告诉我需要一本关于SDC的书。他介绍说,越来越多的工具正在转向SDC,却没有关于这个主题的书籍。随着Xilinx接纳了SDC,将有更多Xilinx FPGA的用户需要学习SDC。
还要感谢我的朋友Sridhar Gangadharan,感谢他为编写本书所做的努力。
感谢Springer的Charles Glaser,因为他很容易地接受了我们对这本书的提议。
我想把这本书献给那些帮我理解SDC和时序约束的人,具体是我受益于他们在我职业生涯的不同阶段对于时序分析主题的大量讨论。这个列表并不详尽,一些著名的人包括Fred Revenu (Xilinx)、Greg Daughtry (Xilinx)、Nupur Gupta (ST Microelectronics)、Pankaj Jain (ST Microelectronics)、Olivia Riewer (ST Microelectronics)、K A Rajagopalan (Texas Instruments)、Subrangshu (Shubro) Das (Texas Instruments)、Satish Soman (Atrenta)、Manish Goel (Atrenta)、Shaker Sharwary (Atrenta) Pratyush Prasoon (Cadence)、Sneh Saurabh (Cadence), Girjesh Soni (Synopsys), Rohan Gaddh (目前,回到学校),等等。
我要感谢我所有的老师,但特别要提到印度理工学院的Swapna Banerjee教授,他在我即将毕业之时带领我进入了VLSI领域。在20世纪90年代初,Dhiraj Sogani(Red Pine)、Mithilesh Jha(Masamb)、Ashutosh Varma(Cadence)和Late Nalyder Jain博士带领我进入了时序领域。 然后, 2000年初,Sushil Gupta(Atrenta)和Vivek Gupta首先带领我进入了SDC领域。
感谢Girjesh Soni(Synopsys)、Subrangshu(Shubro)Das(Texas Instruments)、Satish Soman(Atrenta)、Shrinivasraj Muddey(Xilinx)、Olivier Florent、Ravi Balachandran和Russell Roan(Atrenta),因为他们帮助审阅了本书的部分内容,确保了素材的准确。也要感谢编写本书第17章的Fred Revenu(Xilinx)。还要感谢Charu Puri,他提供了本书中的所有插图。
我要感谢管理部门和Xilinx的法律团队鼓励我参与这项活动。这些人包括Mark Aaldering、Salil Raje、Vidya Rajagopalan、Scott Hover Smoot和Sue Lynn Neoh。Ramine Roane(Xilinx)也经常鼓励我。他的抱怨是:为什么是在2013年中期?为什么不早一点?特别要感谢Mike Gianfagna(Atrenta),他参与和联系的此类任何活动几乎都是确保所有障碍得到解决的保证。
编写本书的信心来源于我以前出版的书得到的积极反响。我得到的好的反响来自Ramesh Dewangan(Atrenta),他送给了他女儿一本,也来自Ahmed Hemani教授(瑞典皇家理工学院),他把这本书推荐给了学生。在印度,如果人们非常认可一本书,并且认为他的学生或孩子也应该学习这本书,这便是对这本书的褒奖之一。感谢他们对我的这种信任。
后很重要的一点是感谢我的家人和朋友。他们的通力配合和良好祝愿一直是我前进的的动力。而且,我的小女儿(Lubha Churiwala – Std. VI)还帮助我随机检查语法和一致性。
Sanjay Churiwala 印度海德拉巴
我们经常从许多设计工程师那里听到有一些书中介绍了综合和静态时序分析等概念,这些概念涵盖了时序约束,但从来没有详细描述过。根据我们多年在时序特性描述、延迟计算、时序分析以及创建和验证约束等领域的工作,本书介绍了指定时序要求所需的概念。
本书结构下面是本书的结构安排。
第1~3章介绍时序分析的主题,包括其在设计周期背景下的需求。这些章节中的描述是与供应商、语言和格式无关的。
第4章提供Tcl语言的概述,因为SDC(Synopsys设计约束)是Tcl的扩展。本章还介绍SDC的概念。
可以将前4章看作入门部分。
第5~8章一同构成讨论时钟的部分,介绍如何应用与时钟相关的约束。这些章介绍各种时钟及其关系,以及如何在SDC中指定它们。
第9章和第10章介绍如何对其余的(非时钟)端口应用约束。有了这部分内容,就覆盖了所有的主要端口。
第11~13章介绍对时序异常的需求。这些章介绍如何在SDC中正确地指定异常。
第14章和第15章涉及更专业的话题,这些概念较少论及个别的约束。相反,它们深入了解设计团队是如何管理大量的约束的,因为它们在跨流程时从前端到后端,将完整的设计划分成电路单元,然后再整合各个电路单元。
第16章介绍一些其他的SDC命令,这些命令可能会对时序分析产生影响。
本书还有一些命令没有涵盖。但是,通过本书可以对时序分析和SDC有基本了解,用户可以轻松理解其余的任何命令,包括SDC未来版本中可能出现的任何扩展。
支持SDC的大多数工具通常还允许对SDC进行一些扩展,以便使用特定工具实现更高的准确性或更好的易用性。第17章概述针对Xilinx Vivado扩展的SDC时序约束。
其他资源SDC是由Synopsys公司发布的开源版本。SDC文档和解析器可从Synopsys网站免费下载。
意见反馈我们已尽努力来提供准确的概念描述。也得到了业内一些专家的帮助,以检查素材的准确性。但是,如果你发现一些描述混乱或有错误的地方,请告知我们。
祝阅读愉快!
Sanjay Churiwala Sridhar Gangadharan 致 谢 一我要感谢Mark Aaldering,他首先告诉我需要一本关于SDC的书。他介绍说,越来越多的工具正在转向SDC,却没有关于这个主题的书籍。随着Xilinx接纳了SDC,将有更多Xilinx FPGA的用户需要学习SDC。
还要感谢我的朋友Sridhar Gangadharan,感谢他为编写本书所做的努力。
感谢Springer的Charles Glaser,因为他很容易地接受了我们对这本书的提议。
我想把这本书献给那些帮我理解SDC和时序约束的人,具体是我受益于他们在我职业生涯的不同阶段对于时序分析主题的大量讨论。这个列表并不详尽,一些著名的人包括Fred Revenu (Xilinx)、Greg Daughtry (Xilinx)、Nupur Gupta (ST Microelectronics)、Pankaj Jain (ST Microelectronics)、Olivia Riewer (ST Microelectronics)、K A Rajagopalan (Texas Instruments)、Subrangshu (Shubro) Das (Texas Instruments)、Satish Soman (Atrenta)、Manish Goel (Atrenta)、Shaker Sharwary (Atrenta) Pratyush Prasoon (Cadence)、Sneh Saurabh (Cadence), Girjesh Soni (Synopsys), Rohan Gaddh (目前,回到学校),等等。
我要感谢我所有的老师,但特别要提到印度理工学院的Swapna Banerjee教授,他在我即将毕业之时带领我进入了VLSI领域。在20世纪90年代初,Dhiraj Sogani(Red Pine)、Mithilesh Jha(Masamb)、Ashutosh Varma(Cadence)和Late Nalyder Jain博士带领我进入了时序领域。 然后, 2000年初,Sushil Gupta(Atrenta)和Vivek Gupta首先带领我进入了SDC领域。
感谢Girjesh Soni(Synopsys)、Subrangshu(Shubro)Das(Texas Instruments)、Satish Soman(Atrenta)、Shrinivasraj Muddey(Xilinx)、Olivier Florent、Ravi Balachandran和Russell Roan(Atrenta),因为他们帮助审阅了本书的部分内容,确保了素材的准确。也要感谢编写本书第17章的Fred Revenu(Xilinx)。还要感谢Charu Puri,他提供了本书中的所有插图。
我要感谢管理部门和Xilinx的法律团队鼓励我参与这项活动。这些人包括Mark Aaldering、Salil Raje、Vidya Rajagopalan、Scott Hover Smoot和Sue Lynn Neoh。Ramine Roane(Xilinx)也经常鼓励我。他的抱怨是:为什么是在2013年中期?为什么不早一点?特别要感谢Mike Gianfagna(Atrenta),他参与和联系的此类任何活动几乎都是确保所有障碍得到解决的保证。
编写本书的信心来源于我以前出版的书得到的积极反响。我得到的好的反响来自Ramesh Dewangan(Atrenta),他送给了他女儿一本,也来自Ahmed Hemani教授(瑞典皇家理工学院),他把这本书推荐给了学生。在印度,如果人们非常认可一本书,并且认为他的学生或孩子也应该学习这本书,这便是对这本书的褒奖之一。感谢他们对我的这种信任。
后很重要的一点是感谢我的家人和朋友。他们的通力配合和良好祝愿一直是我前进的的动力。而且,我的小女儿(Lubha Churiwala – Std. VI)还帮助我随机检查语法和一致性。
Sanjay Churiwala 印度海德拉巴
评论
还没有评论。