数字芯片是怎样设计出来的

导读
本文将概要介绍数字芯片设计的十大流程,以及各大流程中使用的主流EDA软件 。
文章信息
本文由e-works胡中扬原创发布 。


芯片在我们的生活和工作中无处不在 。例如,交通智能卡就嵌入了一颗带有微处理器、储存单元、芯片操作系统的芯片;而手机的主板则集成了数百颗芯片 , 有的负责无线电收发、有的负责功率放大、还有的负责存储照片和文件、处理音频,完成指纹、虹膜、面部的识别 。当然 , 手机中最重要 , 也是价格最昂贵的还属CPU , 它是手机的控制中枢和逻辑计算的中心 , 通过运行存储器内的软件及数据库来操控手机 。


根据处理的信号类型不同,芯片可以分为数字芯片和模拟芯片 。要制造出芯片,首先要完成芯片设计 。本文将概要介绍数字芯片设计的十大流程,以及各大流程中使用的主流EDA软件 。

数字芯片是怎样设计出来的

文章插图
iphone13pro的A15芯片
芯片设计可以分为前端设计(即逻辑设计)和后端设计(即物理设计) 。前端设计包括以下四个步骤:


前端设计
(1)算法或硬件架构设计与分析
在明确芯片的设计需求之后,系统架构师会把这些市场需求转换成芯片的规格指标,形成芯片的Spec,也就是芯片的规格说明书 。这个说明书会详细描述芯片的功能、性能、尺寸、封装和应用等内容 。


系统架构师会根据芯片的特点将芯片内部的规格使用划分出来,规划每个部分的功能需求空间,确立不同单元间联结的方法,同时确定设计的整体方向 。这个步骤对之后的设计起着至关重要的作用,区域划分不够的,无法完成该区域内的功能实现,会导致之前的工作全部推翻重来 。设计出来的东西,必须能够制造出来 , 所以芯片设计需要与产业链后端晶圆的制造和封装测试环节紧密合作 , 工程师不但需要考虑工艺是否可以实现相应电路设计 , 同时需要整合产业链资源确保芯片产品的及时供给 。这里的算法构建会用到编程语言(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 。


推荐阅读