数字芯片是怎样设计出来的?
导读
INTRODUCTION
本文由e-works胡中扬原创发布。
iphone13pro的A15芯片
芯片设计可以分为前端设计(即逻辑设计)和后端设计(即物理设计)。前端设计包括以下四个步骤:
前端设计
系统架构师会根据芯片的特点将芯片内部的规格使用划分出来,规划每个部分的功能需求空间,确立不同单元间联结的方法,同时确定设计的整体方向。这个步骤对之后的设计起着至关重要的作用,区域划分不够的,无法完成该区域内的功能实现,会导致之前的工作全部推翻重来。设计出来的东西,必须能够制造出来,所以芯片设计需要与产业链后端晶圆的制造和封装测试环节紧密合作,工程师不但需要考虑工艺是否可以实现相应电路设计,同时需要整合产业链资源确保芯片产品的及时供给。这里的算法构建会用到编程语言(MATLAB,C++, C,System C, System Verilog等),对于不同类型的芯片,工程师们会有不同的偏好选择。
(2)RTL code(Register Transfer Level,寄存器传输级)实现
由于芯片的设计及其复杂,设计人员并不在晶体级进行设计,而是在更高的抽象层级进行设计。RTL实现就是根据第一步的架构设计结果,转化为Verilog HDL或VHDL语言,这两种语言是世界上最流行的两种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的硬件编程语言,可以用于表示逻辑电路图、表达式等逻辑输出。所以,可以理解为上一步是统筹规划,第二步是具体去实现,设计工程师们通过敲一行行代码,去实现电路的功能。输出结果转化为Verilog HDL或VHDL语言。
(3)编码检查与分析
这一步就是检查代码有没有错误,保证代码不会出现什么歧义导致实现结果和设计目的不一致。一般来说,最常用的编码检查工具就是Synopsys的Spyglass,这个工具最主要检查的内容有两个,一个是Lint检查,一个是CDC (Clock Domain Crossing,跨时钟域)检查。Lint检察不仅可以检测出许多编译器编译过程中的错误,还可以关联很多文件进行错误的检查和代码分析;CDC检查则是对电路设计中同步电路设计的检查,在大型电子电路设计中,设计人员很难设计出整个大型的同步电路,而只能根据电路逻辑功能,划分为多个同步电路部分,由不同的时钟域控制。这些部分可能存在重叠,这会导致重叠部分的触发器状态变化不能在统一的时钟作用下完成,从而导致电路出现亚稳态。电路出现亚稳态会让组合逻辑电路输入状态不可顶知,甚至产生突然的跳变,因此需要进行CDC检查。
SPYGLASS截图,图片源自网络
(4)功能验证
这一步是验证芯片设计与预定的设计需求是否相符的关键步骤,主要是验证电路设计逻辑功能的正确性,而非电路的物理特性(后面的步骤会讲到物理验证)。数字仿真器是数字集成电路逻辑功能验证的主要手段。
随着超大规模集成电路的高速发展,高性能数字仿真器已经成为数字集成电路设计与验证中必备的一环。近年来数字仿真器技术发展很快,当今主流数字仿真软件可以支持数十亿晶体管规模的超大规模集成电路的逻辑功能进行高效精确的仿真验证。为了保证芯片的稳定性,这个阶段的过程时间会持续数月。EDA工程师常用的EDA工具是Mentor(西门子EDA)的Modelsim、Synopsys的VCS和Candence 的NC-Verilog。
功能仿真验证
在整个芯片设计流程中的位置(黑体)
国内外布局布线工具厂商
(6)布局布线(PD)
布局布线是数字后端中占比最大的工作,主要就是把网表转化成GDSII流格式(这是一种用于集成电路版图的数据转换的标准数据文件库格式,其中含有集成电路版图中的平面的几何形状、文本或标签等有关信息,由层次结构组成),确定各种功能电路的摆放位置。PD的步骤包括Floorplan(布局规划)、Place(功能电路的摆放)、CTS(时钟综合)、Optimize(优化)、Route(布线)和ECO(工程变更)等,确保各个模块满足时序和物理制造的要求。这个步骤是后端设计中最核心的工作。布局布线对工具的依赖程度较强,而且工具操作相对来说较为复杂。业界较为常用的是Cadence的Innovus和Synopsys的ICC。
国内外布局布线工具厂商
Leplace图形界面
(7)静态时序分析(STA)
STA(Static Timing Analysis,静态时序分析)是芯片后端设计中的重要步骤。芯片上有海量的极其微小的金属元器件,这些元器件的大小不一,通过引线流过这些元器件的延时会有不同,由于元器件过于微小,芯片的布局布线肯定会受到这些不同大小元器件和之间引线的各种限制,而静态时序分析则是模拟各种元器件间的互联和各种不同状况的仿真,找出存在的各种问题。
静态分析需要保证芯片设计中所有的路径,满足内部时序单元对建立时间和保持时间的设计要求。也就是说无论信号的起点是什么,信号都可以被及时地传递到该路径的终点。同时,也要满足电平跳变时间、电容、噪声、等要求。STA需要制定整个芯片的时序约束约束文件,选择芯片需要Signoff(签发)的Corner(工作范围)以及全芯片的Timing(时序) ECO流程,这个步骤的难度要求很高。STA阶段应用较广的是Synopsys的Primetime和Cadence的Tempus软件。值得一提的是国内鸿芯微纳的ChimeTime,它是一种静态时序签核工具,提供了SPICE仿真精度的签核结果。
(8)物理验证
物理验证也是流片(即试生产)前的一项重要事项。如果物理验证有错,那芯片生产就会失败。在布局布线工具中,真正的物理验证需要检查到器件底层。因此,物理验证需要将金属层和底层金属合并到一起,进行全芯片的DRC(设计规则检查)。同时,还需要做全芯片的LVS(版图与原理图一致性检查),ERC(电气规则检查),确保芯片没有违反任何物理设计规则。物理验证的主要工具在Mentor(西门子EDA)的Calibre中进行,Calibre也是业界标准的物理验证工具。
(9)功耗分析(PA)
功耗分析也是芯片签发的重要步骤,功耗分析的两大任务是分析IR drop(电压降)和EM(电迁移)。及时将结果反馈给布局布线任务组,让他们及时修改后端设计图,解决设计中潜在的问题。功耗分析常用的软件有Ansys公司的Redhawk,以及Cadence公司的Voltus和Synopsys公司的Ptpx。
(10)时序仿真
该步骤是对芯片实际工作时的状态进行仿真,即后仿真,来验证功能是否正常。时序仿真使用布局布线后器件给出的模块和连线的延时信息,在最坏的情况下对电路的行为进行实际评估。时序仿真使用的仿真器和上述第四步的功能仿真使用的仿真器是相同的,区别在于功能仿真是在布线前进行,仅仅关注输出和输入的逻辑关系是否正确,不考虑时间延时信息;而时序仿真是在布线后进行,不仅关注输出和输入的逻辑关系是否正确,同时还计算了时间延时信息。