数字集成电路芯片的设计流程由一系列设计实现和验证测试过程组成(图1)。首先是功能定义,描述了对芯片的功能和性能参数的要求。我们使用系统设计工具设计方案和架构,划分芯片的模块功能。然后是代码设计,我们用硬件描述语言(HDL,比如Verilog)来表达模块功能,形成计算机能理解的代码(行为级,RTL级)。仿真验证后进行逻辑综合,将代码翻译成更低级的门级网表,对应特定的区域和参数,再次进行仿真验证。这两种仿真都可以通过电路模型(逻辑仿真)或者FPGA硬件电路(原型仿真)进行验证,速度更快,更接近实际电路。设计和仿真验证是迭代过程,直到验证结果完全满足规范要求。验证还包括静态时序分析、形式验证等。以验证电路的功能在设计转换和优化过程中保持不变。可测性设计(DFT,ATPG)也在这一步完成。接下来是数字电路后端实现中最关键的布局,实现电路模块(如宏模块、存储器、管脚等)的布局规划和布局。)以及电源、时钟和标准单元之间的信号线布线。在布局过程中和布局之后,需要对布局进行验证,包括形式验证和物理验证,如布局与逻辑电路图的比较、设计规则的检查、电气规则的检查等。最后输出GDS数据,交给芯片代工厂,在晶圆上加工,封装测试,就得到我们实际看到的芯片。
图1数字电路设计验证流程
本文提到的后端实现工具主要是指两个阶段使用的工具集合:Floorplan和PlaceRoute。目前芯片设计公司使用的主要软件有SynopsysICC2/FusionCompiler、CadenceEncounter/Innovus、MentorGraphicsNitro-Soc等。
图2数字后端实现过程
数字后端的设计过程就是将逻辑综合映射后的电路网表转换为GDS的过程,也就是将电路从逻辑网表转换为几何版图的过程。业内各种工具系统的实现大同小异,一般可以细分为设计环境建立、版图规划、布局、时钟树综合、布线、调试、完善等步骤(图2)。
1.设计环境的建立
设计环境的建立是将后端设计所需的数据读入数据库,然后检查数据的完整性和一致性。后端设计的输入数据包括三部分:门级网表、设计约束和工艺库文件。其中,GateLevelNetlist (GLN)是一个逻辑综合工具,将设计从RTL(RegisterTransferLevel)映射到GLN,它满足时序、面积和功耗的约束。SDC(SynopsysDesignConstraints)描述了芯片上时钟、延迟、电源、面积、设计规则和工作条件的约束。过程库主要包括时间序列库文件和模型库文件,如物理抽象库文件LEF、物理详细库文件GDS/绿洲、时间序列库文件。lib,rlc模型文件,RLC,EM规则文件,DEF文件等等。
2.布局规划的平面布置图
布局规划是后端实现中唯一需要人工完成的阶段,其他阶段通过修改脚本和约束自动完成。版图规划的好坏直接决定了后续版图的收敛以及芯片的面积性能和功耗。平面图通常由有经验的设计师完成。现在Cadence和Google也在探索利用AI实现Floorplan。它包括初始化、宏模块部署和I/O引脚部署。根据设计前端给定的数据流方向,我们需要知道设计中模块之间的交互和时钟之间的关系,从而规划模块的位置和模块接口的位置。模块的形状与设计类型有关,也影响绕组资源的使用,只考虑前端的不同逻辑功能,需要仔细规划。低功耗设计需要提前规划好各个电源域的划分区域和隔离岛。在分配放电源时,需要根据芯片功耗估算,增加芯片内核的电源地;根据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就是值得的。另外,使用usefulskew进行手动时钟树ECO也是一个重要的技巧。
10.定时调试
计时调试的目的是找到修复所有违反约束的方法。我们需要使用不同的选项来运行时序分析器,分析各种时序报告,识别可能的时序问题,同时在GUI和布局上查看关键路径,并改进设计时序。时序优化贯穿于数字电路后端设计的全过程。
11.数据导出
设计的最后一步是GDS的出口。GDS描述了制造芯片所需的所有信息,如晶体管的尺寸和物理位置,布线的宽度和位置等。对GDS的要求是功能与RTL一致,性能符合指标,规格符合代工厂要求,功耗性能区(PPA)优秀。EDA工具强调一个,自动化,也就是自动化。这一点在数字集成电路的后端设计工具中尤为突出。要处理几十亿晶体管的电路,对涉及的算法的性能、效率、资源占用都有非常高的要求。目前,我们正在努力探索最新的AI技术和云计算技术在数字芯片全流程中的应用,以满足各种现代芯片的设计需求。责任编辑:抄送
标签:设计芯片时钟