内容简介
《时序收敛的艺术 : 高级ASIC设计实现》主要介绍ASIC设计所需的时序收敛问题,旨在提供一种动手解决问题的方法去完成设计实现中*具挑战性的部分。
《时序收敛的艺术 : 高级ASIC设计实现》针对时序收敛流程进行充分解释,内容涉及数据结构和视图、MMMC分析、时序分析、布局和时序、放置和时序、时钟树综合、*终布线和时序、设计签收等,每章末尾都有相应的Perl 脚本作为参考。《时序收敛的艺术 : 高级ASIC设计实现》抓住物理设计和时序分析的精髓,解决复杂ASIC系统日常设计中遇到的问题,向读者展示物理设计和时序分析方法。
目录
目录
第1章数据结构和视图 1
1.1数据结构 2
1.2通用数据结构 3
1.3项目数据结构 4
1.4工艺变化产生的影响 10
1.5物理设计脚本 14
1.6总结 76
参考文献 76
第2章MMMC分析 77
2.1典型的ASIC设计实现流程 79
2.2MMMC定义 81
2.3MMMCASIC设计实现流程 85
2.4总结 88
参考文献 89
第3章时序分析 91
3.1时序约束 92
3.2优化约束 95
3.3设计规则约束 98
3.4总结 99
参考文献 100
第4章布局和时序 101
4.1布局风格 102
4.2布局脚本 111
4.3总结 121
参考文献 121
第5章放置和时序 123
5.1tap和endcap单元 124
5.2插入备用标准单元 127
5.3高扇出网络 127
5.4放置标准单元 130
5.5放置阶段相关脚本 132
5.6总结 136
参考文献 136
第6章时钟树综合 137
6.1构建物理时钟树结构 139
6.2时钟树结构的时序优化 142
6.3*终时钟树结构的时序优化 143
6.4CTS脚本 144
6.5总结 150
参考文献 151
第7章*终布线和时序 153
7.1电迁移问题 155
7.2去耦电容单元的考虑 156
7.3金属层ECO标准单元 157
7.4初始布线设计 160
7.5设计布线优化 162
7.6MMMC设计时序收敛 164
7.7*终布线和MMMC脚本 169
7.8总结 176
参考文献 177
第8章设计签收 179
8.1形式验证 181
8.2时序验证 183
8.3物理验证 188
8.4签收脚本 192
8.5总结 220
参考文献 221
试读
第1章 数据结构和视图
*好在一个数据结构上操作100个函数,而不是让10个函数操作10个数据结构。
Alan Perlis
数据结构是一种专门用于组织、处理、检索、操作和存储数据的格式。虽然有基本结构和高级结构之分,但任何数据结构的设计都是为了排列数据以适应特定的目的,以便它可以以适当的方式访问和处理数据。
对于高级设计实现,数据结构影响设计质量和设计流程的效率。它们以目录和子目录的形式排列,其中包含各种专用集成电路(ASIC)的设计数据和二进制或文本形式的视图(功能性和操作性)。这些数据在ASIC设计实现流程的不同阶段,如综合、布局布线、时序分析等都有用到。
操作视图是在ASIC设计和实现过程中使用的与EDA工具相关的数据。大多数情况下,它们以二进制数据库的形式存在,要么由EDA提供商提供,要么由内部开发。功能视图是在ASIC设计和实现期间使用的数据文件的集成。
内部或外部的功能视图和操作视图都必须具有积极的质量控制(QC)流程。因此,可以使用标准的ASIC设计流程确保其准确性和质量。
需要注意的是,质量控制用于验证可交付成果的质量是否可接受,它们必须是完整和正确的。质量控制活动包括检查可交付的同行评审和测试过程。质量控制是对要求的遵守。如果没有良好的经过深思熟虑的QC流程和标准,可能会影响*终ASIC产品的结果。
1.1.数据结构
数据结构有两种类型:一种是通用数据结构(目录或存储库),包含所有ASIC项目使用的所有视图,为了确保数据的完整性,所有视图文件都需要是原子集合;另一种是项目数据结构,它是一个目录,用来进行项目的设计实现和存储。
通用数据结构和项目数据结构都需要数据管理。数据管理是一个管理过程,包括获取、验证、存储、保护和处理所需的数据,以确保可访问性、可靠性,以及数据对用户的及时性。一般情况下,通用数据结构由系统管理员管理,项目数据结构由版本控制系统(VCS)管理。
VCS管理多个版本的计算机文件和程序。VCS提供两个主要的数据管理功能:一个允许用户锁定文件,一次只能由一个人编辑;另一个将追踪文件的改变。
如果只有一个用户在编辑文档,则不需要锁定这个文件。然而,如果一组设计实现工程师正在同一个项目上工作,当两个人在同样的时间编辑同一个文件时,一个人可能会意外地覆盖其他人所做的更改。
出于这个原因,VCS允许用户签出文件进行编辑。文件从共享文件服务器签出后,其他用户无法对其进行编辑。当用户完成文件编辑后,保存更改并签入文件,其他用户就可以编辑该文件。
VCS还允许用户通过标记跟踪对文件的更改,这种类型的VCS通常用于设计实现开发(开发VCS的*初目的就是为了管理软件开发),也被称为源代码控制或修订控制。
流行的VCS,如Subversion(SVN),允许ASIC设计和实现人员保存程序的增量版本,如RTL文件。这提供了回滚到程序或源代码的早期版本的功能(如果有必要的话)。例如,如果在新版本的RTL代码中发现了错误,则设计工程师在调试RTL代码时可以查看以前的版本。
1.2.通用数据结构
必须有一个经过深思熟虑的通用数据结构方便开发人员同时管理多个ASIC项目。
如图1.1所示,一个通用数据结构由五个子目录组成:知识产权(IP)、库、存储、工具和模板。
IP目录用于公司内部IP开发,包含三个子目录。红色(R)用于IP开发;黄色(Y)包含未经过完整QC过程的已开发IP,可以视为风险因素;绿色(G)表示已完成所有QC流程的IP,有明确的版本标记,并且可以提供给特定的项目使用。
图1.1 通用数据结构示例
*新版本的库目录需要有一个链接,映射到存储区域,而不是实际的存储库视图。这样做的原因是允许用户可以创建脚本和程序,而无需在新版本出现后进行更改。
存储目录有两个子目录——新版本和旧版本,用于存储功能视图,包括外部或内部数据,例如标准单元、IO(输入和输出),以及外部提供的IP库。存储目录中的功能视图是物理布局、抽象视图、时序模型、仿真模型和晶体管级电路描述数据。*常见的ASIC设计功能视图举例如下:
?lib_file:静态时序分析中的各种时序文件。
?cdl_file:物理验证中使用的电路描述语言。
?spi_mod:用于晶体管级电路仿真的Spice模型。
?tech_file:各种EDA工具的技术文件。
?lef_file:针对布局布线工具使用的库交换格式(LEF)的抽象文件,比如标准单元、IO、各种IP。
工具目录下有两个子目录,一个用于存储由EDA供应商提供和开发的软件与程序,另一个用于存储内部开发的软件与程序,例如:
?simulation(用于模拟电路仿真、混合信号仿真、数字信号仿真)。
?timing(静态时序分析)。
?memory compiler(静态随机存储器、只读存储器)。
?design integration(布局和布线、版图、功耗分析)。
?verification(物理验证和形式验证)。
?internal(设计相关的脚本和程序)。
模板目录用于存储在设计实现流程中不同用途的通用模板。
1.3.项目数据结构
ASIC的设计和实现过程中一般使用项目数据结构。相比之下,项目数据结构比通用数据结构更复杂,因为项目数据结构被不同的ASIC设计和实现工程师使用。所有项目数据结构对于所有设计项目都是相同的,这一点很重要。
尽管许多参与ASIC设计项目的公司都有自己的项目数据结构风格,但功能和视图的风格应保持一致,通过这个过程,人们可以以*有效的方式收集和管理数据并保持高效运行。
此外,对函数和视图保持相同的命名约定也很重要。使用相同的命名约定的优点之一是方便用户轻松查找数据及其位置,此外对设计实现也很有用,可以方便程序开发人员创建涵盖所有相关项目的功能脚本。
为一个项目创建一个项目数据结构,基本上需要执行以下三个步骤:
(1)接收输入。
(2)处理。
(3)提供输出。
**步是获取用户输入。输入可以是任何形式,例如,一个简单的包含项目信息的文本文件(如项目名称、工艺技术节点、设计视图的位置等)。
第二步需要某种编程脚本,比如Perl、Tcl(工具命令语言)或Make(从用户创建的makefile中读取规则)。
第三步是提供输出,例如,创建项目目录、链接到中央视图库等。
为了使这一过程有效,需要对上述三个步骤进行优化。
图1.2显示了一个名为moonwalk的ASIC设计项目的项目数据结构示例。该项目有设计和实现两个子目录,并且都有指向通用数据结构的链接。
拥有图1.2所示的数据结构将允许用户创建ASIC设计和实现相关的脚本(例如综合),从而在稍后的设计和实现流程中避免由于编辑错误导致的问题。设计和实现目录应该由系统管理员在创建新项目空间后创建。
设计目录用于ASIC产品设计开发,共有五个子目录:
(1)RTL(RTL开发工作空间)。
(2)SIM(RTL仿真工作空间)。
(3)LIB(指向通用目录和IP目录的链接)。
(4)ENV(与设计相关的环境文件)。
(5)MEM(存储器的时序和网表文件)。
图1.2 项目数据结构示例
实现目录有时序、综合和物理设计三个子目录,每个子目录用于ASIC设计实现流程的不同阶段。这三个子目录的内容说明如下:
(1)时序:
?STA(STA工作区)。
?SIM(门级仿真工作区)。
?TCL(静态时序分析和仿真脚本)。
?NET(布线后网表)。
?ENV(门级仿真和STA环境文件)。
?SDF(门级仿真的标准延迟文件格式)。
?MEM(存储器时序和网表文件)。
?SDC(设计约束文件)。
?LIB(指向通用库和通用IP的链接)。
?SPEF(标准寄生参数提取文件)。