数字集成电路芯片的设计过程由一系列设计实现和验证测试过程组成(图1)。首先是功能定义,描述了对芯片的功能和性能参数的要求。我们使用系统设计工具设计方案和架构,划分芯片的模块功能。然后是代码设计。我们用硬件描述语言(HDL,如Verilog)来表达模块的功能,形成计算机能理解的代码(行为级,RTL级)。仿真验证完成后,进行逻辑综合,将代码翻译成更低级的网表,对应特定的区域和参数,再次进行仿真验证。这两种仿真可以通过电路模型(逻辑仿真)或FPGA硬件电路(原型仿真)来验证逻辑功能,速度更快,更接近实际电路。设计和仿真验证是一个迭代的过程,直到验证结果完全满足规范要求。验证还包括静态时序分析、形式验证等。以验证电路的功能在设计转换和优化过程中保持不变。可测性设计(DFT,ATPG)也在这一步完成。接下来是数字电路后端实现中最关键的布局,实现电路模块(如宏模块、存储器、管脚等)的布局规划和布局。)以及电源、时钟和标准单元之间信号线的布线。在布局过程中和布局之后,需要对布局进行验证,包括形式验证和物理验证,如布局与逻辑电路图的比较、设计规则检查、电气规则检查等。最后输出GDS数据,传输到芯片代工厂,在晶圆上处理,封装测试,得到我们实际看到的芯片。
图1数字电路设计的验证过程
本文所指的后端实现工具主要是指在布图规划和布局布线两个阶段使用的工具集。目前芯片设计公司使用的主要软件有SynopsysICC2/FusionCompiler、Cadence Encoder/Innovus、MentorGraphicsNitro-Soc等。
图2数字后端实现过程
数字后端的设计过程就是将逻辑综合映射后的电路网表转换为GDS的过程,也就是将电路从逻辑网表转换为几何版图的过程。业内各种工具系统的实现都差不多。一般可细分为设计环境建立、版图规划、版图、时钟树综合、布线、调试改进等步骤(图2)。
1.设计环境的建立
设计环境的建立是将后端设计所需的数据读入数据库,然后检查数据的完整性和一致性。后端设计的输入数据包括三部分:门级网表、设计约束和工艺库文件。其中,GateLevelNetlist (GLN)是将设计从RTL(RegisterTransferLevel)映射到GLN的逻辑综合工具,它满足时序、面积、功耗等约束条件。设计约束SDC(SynopsysDesignConstraints)描述了时钟、延迟、电源、面积、设计规则、工作条件等约束条件。过程库主要包括时间序列库文件和模型库文件,如物理抽象库文件LEF、物理详细库文件GDS/绿洲、时间序列库文件。lib、rlc模型文件、RLC、EM规则文件、DEF文件等。
2.平面布置图
布局规划是后端实现中唯一需要手动工作的阶段。其他阶段通过修改脚本和约束,然后通过工具自动完成。版图规划直接决定了后续版图和布线的衔接,以及芯片的面积性能和功耗。平面图通常由有经验的设计师完成。现在Cadence和谷歌也在探索使用AI来实现Floorplan。包括初始化、宏模块布局和输入输出引脚布局。根据设计前端给出的数据流,我们需要知道设计中模块之间的交互以及时钟之间的关系,从而规划模块的位置和模块接口的位置。模块的形状与设计类型有关,也影响布线资源的使用。前端只考虑逻辑功能,需要仔细规划。低功耗设计需要提前规划好每个电源域的划分区域和隔离岛。在布置放电源时,需要根据芯片功耗估算,增加芯片内核的电源地;根据SSO、ESD和EM的估计,增加输入和输出引脚的电源地。添加输入引脚后,可以根据宏模块、ip和IO的面积估算芯片面积。
3.电源及供电网络分析
在现代低功耗芯片设计中,电源设计是非常重要的一步,包括所有单元功耗的分析计算、静态IRDrop和电迁移EM分析。可以分多个阶段进行,如布局、电源接地、全局布局、详细布线等。分析电源设计是否合规。计算过程包括网络活跃因子计算、电源分析、供电网络分析、网络电阻分析、阻抗失配分析、IRDrop分析、EM分析等。
4.静态时序分析
通过建立和使用静态时间序列分析器,可以验证设计是否满足所有设计约束,例如在所有要求的操作条件下的建立和保持时间,或者可以确定违反时间序列的原因。静态时间序列分析主要包括数据准备、分析条件设置、生成时间序列报告和分析报告。所需数据(电路网表、时序库、约束文件、寄生模型、外部寄生文件)已经在第一步读入数据库,这里也可以补充。通过以一种或多种方式考虑PVT、RCX、OCV、CRPR等因素来设置分析条件。根据分析要求,控制分析器执行适当的命令,以获得时间序列分析报告。分析报告后,执行相应的操作。例如,从时序路径分析报告中,可以看到设计的关键路径,然后进行增量修改,以满足时序要求。
5.定义电源结构
这一步是为电源绕组创建受限区域,创建电源带、电源环、标准单元导轨等。定义如何连接到宏模块的电源引脚等。完成电源绕线,并报告电源状态。
6.布局和优化设计
这个过程包括布局和优化的准备(布局指南和布局分组),未优化的布局,插入备用单元(ECO的准备)和Tap单元,扫描链的管理(重新排列或分割),布局和优化,布局和优化结果的分析,以及确定是否需要迭代。传统的时序驱动布局算法通常会留下许多时序违规,因为它们不能仅通过布局来纠正。后布局优化工具发现时序违规后,会进行大量修改以满足时序约束的要求,如修改单元大小、插入缓冲区、分解驱动等。这样会逐渐降低原版面的质量。因此,为了满足时间和拥塞约束,需要进行多次布局迭代和优化。我们工具的布局和优化引擎是并行的。从宏观固定的预布局出发,可以得到一个时序质量最好、拥塞最低的全布局。并且布局优化也可以在精心设计的设计上逐步实现。
7.时钟树合成
布局之后,就是布线工作了。我们必须首先完成时钟网络的布线,因为它们比公共数据路径上的网络更重要。在数字电路中,时序元件的数据传输由时钟控制。时钟频率决定了数据处理和传输的速度,时钟频率也决定了电路的最终性能。决定时钟频率的主要因素有两个,一个是组合逻辑部分的最长电路延迟,另一个是时序元件中的时钟脉冲。组合逻辑部分没有太多可以优化的延迟,时钟偏斜成为影响电路性能的制约因素。时钟合成的主要目的之一是减少时钟偏移。时钟是数字芯片中最长、最复杂的信号,从时钟源到每个时序元件的终端节点可以形成树状结构。时钟源扇出很大,负载很重,需要一个时钟树结构,通过一级器件驱动最后的叶子节点。时钟树综合的另一个目的是使相同的时钟信号同时到达每个终端节点。采用的方法也很简单:在时钟信号网络中插入缓冲器或反相器,平衡信号延迟。时钟树综合的准备工作包括标记时钟树中可以使用的缓冲器/反相器,定义时钟结构规则(如绕线、时钟单元外围间距、缓冲器等。),生成时钟偏斜约束(即定义各种偏斜组和时序约束),然后综合时钟树,再对综合结果进行分析和优化,如修复设置时间违例、额外功耗和面积回收等。
8.布线和设计优化
虽然这一步是自动完成的,但是还需要创建布线指南来指导路由器的操作。包括工艺全局布线、总线布线、详细布线、人工优化、添加保护、金属填充、天线效应修复、光刻修复、到凸块的布线等。
9.工程变更需要ECO(工程变更订单)
ECO是对已完成或接近完成的设计的增量变更。它可能是对设计的网表、布局或布线的小改变,而设计的主要部分的未改变部分不需要重建。ECO可能涉及所有层的变化,或者只涉及金属层的变化。如果改装门的数量不到总数的5%,那么ECO就是值得的。另外,使用有用的草图进行手动时钟树ECO也是一个重要的技巧。
10.定时调试
调试的目的是找到修复所有违反约束的方法。我们需要使用不同的选项来运行时序分析器,分析各种时序报告,识别可能的时序问题,同时在GUI和布局上查看关键路径,以改进设计的时序。时序的优化贯穿于数字电路的整个后端设计过程。
1.数据导出
设计的最后一步是将电路布局数据输出到GDS。GDS描述了制造芯片所需的所有信息,如晶体管的大小和物理位置,导线的宽度和位置等。GDS的要求是功能与RTL一致,性能符合指标,规格符合代工厂要求,功耗性能区(PPA)优秀。EDA工具强调一个,自动化,也就是自动化。这一点在数字集成电路的后端设计工具中尤为突出。处理百亿亿晶体管规模的电路,对涉及的算法的性能、效率、资源占用都有很高的要求。目前,我们正在努力探索最新的AI技术和云计算技术在数字芯片全流程中的应用,以满足各种现代芯片的设计需求。编辑:CC
标签:设计布局时钟