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

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

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

iphone13pro的A15芯片

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

前端设计

(1)算法或硬件架构设计与分析

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

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

(2)RTLcode(RegisterTransferLevel,寄存器传输级)实现

由于芯片的设计极其复杂,设计人员并不在晶体级进行设计,而是在更高的抽象层级进行设计。RTL实现就是根据第一步的架构设计结果,转化为VerilogHDL或VHDL语言,这两种语言是世界上最流行的两种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的硬件编程语言,可以用于表示逻辑电路图、表达式等逻辑输出。所以,可以理解为上一步是统筹规划,第二步是具体去实现,设计工程师们通过敲一行行代码,去实现电路的功能。输出结果转化为VerilogHDL或VHDL语言。

(3)编码检查与分析

这一步就是检查代码有没有错误,保证代码不会出现什么歧义导致实现结果和设计目的不一致。一般来说,最常用的编码检查工具就是Synopsys的Spyglass,这个工具最主要检查的内容有两个,一个是Lint检查,一个是CDC(ClockDomainCrossing,跨时钟域)检查。Lint检查不仅可以检测出许多编译器编译过程中的错误,还可以关联很多文件进行错误的检查和代码分析;CDC检查则是对电路设计中同步电路设计的检查,在大型电子电路设计中,设计人员很难设计出整个大型的同步电路,而只能根据电路逻辑功能,划分为多个同步电路部分,由不同的时钟域控制。这些部分可能存在重叠,这会导致重叠部分的触发器状态变化不能在统一的时钟作用下完成,从而导致电路出现亚稳态。电路出现亚稳态会让组合逻辑电路输入状态不可预知,甚至产生突然的跳变,因此需要进行CDC检查。

SPYGLASS截图,图片源自网络

(4)功能验证

这一步是验证芯片设计与预定的设计需求是否相符的关键步骤,主要是验证电路设计逻辑功能的正确性,而非电路的物理特性(后面的步骤会讲到物理验证)。数字仿真器是数字集成电路逻辑功能验证的主要手段。

功能仿真验证

在整个芯片设计流程中的位置(黑体)

后端设计

(5)逻辑综合(Synthesis)

从这一步开始,就进入芯片设计的后端设计(物理设计)阶段了。主要负责将RTLcode转换为实际后端使用的Netlist(网表,包含了RTL中所有的逻辑信息,以及离散傅立叶变换、门控时钟和I/O等)。网表的质量对芯片的布局布线工作起到决定性作用。该过程需要考虑工艺的电特性和物理特性等因素,要尽可能做到Performance(性能)、Power(功耗)和Area(面积)的PPA优化。Synthesis的质量在一定程度上取决于综合软件的性能,业界流行的两个逻辑综合工具是Synopsys的DesignCompiler和Cadence的Genus,综合工程师的一个基本要求便是熟练地掌握两个工具的使用方法。

国内外布局布线工具厂商

(6)布局布线(PD)

布局布线是数字后端中占比最大的工作,主要就是把网表转化成GDSII流格式(这是一种用于集成电路版图的数据转换的标准数据文件库格式,其中含有集成电路版图中的平面的几何形状、文本或标签等有关信息,由层次结构组成),确定各种功能电路的摆放位置。PD的步骤包括Floorplan(布局规划)、Place(功能电路的摆放)、CTS(时钟综合)、Optimize(优化)、Route(布线)和ECO(工程变更)等,确保各个模块满足时序和物理制造的要求。这个步骤是后端设计中最核心的工作。布局布线对工具的依赖程度较强,而且工具操作相对来说较为复杂。业界较为常用的是Cadence的Innovus和Synopsys的ICC。

Leplace图形界面

(7)静态时序分析(STA)

STA(StaticTimingAnalysis,静态时序分析)是芯片后端设计中的重要步骤。芯片上有海量的极其微小的金属元器件,这些元器件的大小不一,通过引线流过这些元器件的延时会有不同,由于元器件过于微小,芯片的布局布线肯定会受到这些不同大小元器件和之间引线的各种限制,而静态时序分析则是模拟各种元器件间的互联和各种不同状况的仿真,找出存在的各种问题。

(8)物理验证

物理验证也是流片(即试生产)前的一项重要事项。如果物理验证有错,那芯片生产就会失败。在布局布线工具中,真正的物理验证需要检查到器件底层。因此,物理验证需要将金属层和底层金属合并到一起,进行全芯片的DRC(设计规则检查)。同时,还需要做全芯片的LVS(版图与原理图一致性检查),ERC(电气规则检查),确保芯片没有违反任何物理设计规则。物理验证的主要工具在Mentor(西门子EDA)的Calibre中进行,Calibre也是业界标准的物理验证工具。

(9)功耗分析(PA)

功耗分析也是芯片签发的重要步骤,功耗分析的两大任务是分析IRdrop(电压降)和EM(电迁移)。及时将结果反馈给布局布线任务组,让他们及时修改后端设计图,解决设计中潜在的问题。功耗分析常用的软件有Ansys公司的Redhawk,以及Cadence公司的Voltus和Synopsys公司的Ptpx。

(10)时序仿真

总结下来,数字芯片的前端设计是逻辑设计,用逻辑电路实现其预期的功能。后端部分则是对前端设计的物理实现。芯片设计完成后,Fabless(芯片设计)公司一般会将设计结果以GDSII格式记录的电路版图数据交给Foundry(芯片代工厂)进行Tape-out(流片)了,也就是试生产。

为什么会叫Tape-out呢?因为在上世纪七八十年代,芯片的设计数据都是写到磁带或者胶片里传给工厂,设计团队将数据写入磁带叫Tapein,工厂读取磁带的数据叫Tapeout,虽然随着科技的发展,自动化集成电路版图工具软件早已代替了磁带,但是这个叫法一直沿用下来了。当Tapeout完成后,芯片就可以正式开始生产了。

由于芯片的流片花费巨大,因此芯片的可靠性和可制造性,需要尽可能在设计阶段就能确保。主流EDA软件的验证和仿真功能十分完善,可以通过在各个阶段不断地进行验证仿真,减少在流片中的错误,降低流片的成本,确保芯片的可靠性。

芯片设计非常专业,每一个设计阶段涉及到的各种软件种类繁多,虽然全球EDA软件市场只有数百亿美元的规模,但是它撬动的是万亿美元级的集成电路市场,因此,EDA软件产业具有重要的战略意义。

当前,我国高速重视发展工业软件,国产EDA软件迎来了发展的春天,我国的EDA市场正在全面发力,涌现出华大九天、概伦电子、广立微、九同方、上海立芯、芯华章、芯愿景和鸿芯微纳等知名品牌。虽然EDA领域的“卡脖子”问题对我国高端芯片的设计与制造产生了较大影响,但同时也为国产EDA软件厂商带来更大的市场机会。通过更多芯片设计、制造和封装测试企业在实践中的应用,不断为国产EDA软件反馈应用需求和软件改进需求,将迅速提升我国EDA软件的技术水平。

THE END
1.web前端开发与后端开发有什么区别?企业对于web前端开发工程师的需求量也越来越大,使得很多人也通过Web前端开发工程师培训课程成功的晋升为Web前端开发工程师,Web前端开发工程师作为一个专业技术岗位,需要掌握多种技术来构建现代化的网页和应用程序,今天八维职业学校和大家一起来看看web前端开发与后端开发有什么区别,希望对想要学习和了解web前端开发工程师...https://www.bwie.com/jsgh/231.html
2.前端组件·致远开放平台附件组件的使用分为前端和后端,前两部分配合使用才能实现完整的附件相关功能。前端负责界面展现,后端负责附件的保存、获取相关逻辑。在开发时需要分别编写前、后端代码。 附件上传分为下面几种方式: 标准方式:即附件的显示、保存等功能不需要调用者关系,组件会完成所有功能。调用者只按要求调用几个接口即可。使用方法参考...http://open.seeyon.com/book/ctp/frount.html
3.前端和后端的区别前端和后端有什么区别常见问题前端和后端有什么区别 区别:前端主要关注用户界面和用户交互,而后端则负责处理数据和业务逻辑,二者相互配合构建完整的web应用程序。 前端和后端在Web开发中扮演着不同的角色,主要区别如下: 功能: 前端:负责用户界面和用户体验,包括网页的设计、布局、交互和样式。https://m.php.cn/faq/713299.html
1.前端开发和后端有什么区别工资待遇区别 岗位名称 平均工资 较上年 前端开发 ¥16.7K -4% 后端 ¥22.9K -7% 说明:前端开发和后端哪个工资高?前端开发低于后端。前端开发平均工资¥16.7K/月,2024年工资¥16.9K,2024年工资低于2023年,后端平均工资¥22.9K/月,2024年工资¥22.9K,2024年工资低于2023年,统计依赖于各大平台发布的...https://www.jobui.com/gangwei/pk/qianduankaifa-houduan/
2.数字前端后端的区别以及流程简介数字前端后端的区别、以及流程简介 前端设计(也称逻辑设计)和后端设计(也称物理设计)并没有统一严格的界限,涉及到与工艺有关的设计就是后端设计。 个人理解是: 数字前端以设计架构为起点,以生成可以布局布线的网表为终点;是用设计的电路实现想法; 主要包括:基本的RTL编程和仿真,前端设计还可以包括IC系统设计、验证(...https://blog.csdn.net/weixin_42905573/article/details/107344173
3.模拟前端和数字后端哪个好模拟前端和数字后端的区别模拟前端和数字后端都是电子系统设计中的重要环节,它们各自扮演着不可或缺的角色,难以简单地进行优劣比较。 模拟前端主要关注于将真实世界的模拟信号转换为数字信号,它是连接物理世界与数字世界的桥梁。模拟前端的设计需要考虑信号的完整性、噪声抑制、信号放大等诸多因素,对于系统的整体性能有着直接的影响。因此,模拟前...https://www.elecfans.com/d/2516103.html
4.单页Web应用:JavaScript从前端到后端腾讯云开发者社区3.必须记住,每次调用函数时都会创建一个唯一的执行环境对象。函数执行完后,执行对象就被丢弃,除非调用者引用 了它。如果函数返回的是一个数字,就不能引用函数的执行环境对象,但是,如果函数返回的是一个更复杂的结构,像是函数对象或者数组,将返回值保存到一个变量上,就创建了一个对执行环境的引用。 https://cloud.tencent.com/developer/article/1481186
5.设计理论:字体设计的基本知识心得技巧网页制作问:如何配置好前端和后端字库,它们之间的关系对排版的影响? 答:排版软件中的字体设置是根据发排软件中的字体情况来设置的,如果后端发排软件中有的字库在排版软件中不用设置下载,反之则需要下载。 问:GB字库和GBK字库又有何区别如何应用? 答:GBK字库比GB字库包容的汉字要多的多,GBK字库达到了21003个字,这样大大...https://www.jb51.net/web/7100_all.html
6.关于HTTPRequestSmuggling(HTTP请求夹带)的二三事这样一来,前端服务器和后端服务器对模糊构造的Transfer-Encoding标头解析结果不同,相互之间对请求的边界不能形成共识,就会导致请求夹带漏洞的产生。 漏洞解析 HTTP请求夹带攻击需要将Content-Length头和Transfer-Encodeing头放入单个请求中,并操控使得前端和后端服务器以不同方式处理请求,这种攻击取决于前端和后端两台服务器...https://xz.aliyun.com/t/11728?page=5
7.漫谈车规MCU之何为车规?2.1 需求定义(MRD和PRD) 2.2 前端设计(数字外设和模拟外设IP设计) 2.3 逻辑仿真和数字验证 2.4 后端设计与仿真 2.5 流片与ECO设计修改 2.6 回片测试与EVB功能验证 2.7 CP测试 2.8 Bonding与封装 2.9 FT测试与老化测试(Burn-In) 2.10 AEC-Q100可靠性测试 ...https://www.eet-china.com/mp/a246307.html
8.前端测试和后端测试的区别是什么那么,前端测试和后端测试的区别是什么呢? 1、测试重点不同:前端测试主要关注用户界面的设计和交互体验,包括页面布局、按钮、文本框、表单、链接等元素的设计和功能测试,以确保用户可以轻松地与应用程序或网站进行交互并完成所需的任务。后端测试则更注重系统功能的正确性、性能和安全性等方面的测试,以确保应用程序或网...https://www.pxwy.cn/news-id-80180.html
9.适合普通大学生的前端学习路线前端和后端相比,需要学习的知识还是要少很多,如果你要入门后端,你可以要学习一大堆只是,但是你入门前端,只要把 HTML + CSS + JavaScript 这三门知识学习了,就基本差不多入门前端了。 假如你没有明确的目标,或许可以按照我说的学习路线来学习一波,我写的每一份学习路线,不会很全面,因为我认为,东西列的太多,反而...https://www.51cto.com/article/674444.html
10.发动机的前端是什么?如何区分发动机的前端和后端?一般发动机飞轮的末端是后端,也就是动力输出端,后面是减震器、变矩器、变速箱等等。与后端相对的是前端。前端一般有发电机、水泵、空调压缩机、风扇等配件。用皮带连接,所以可以看到很多滑轮。 发动机前端和后端的区别: 按照曲轴的朝向,简单来说,曲轴带皮带轮的一端是发动机的前端,带飞轮的另一端是发动机的后端。可...https://www.yoojia.com/ask/5-14752006640958413911.html
11.前端校验和后端校验区别前端校验和后端校验区别 技术标签:postman软件测试 前台验证数据格式 后台验证的是数据的正确性 当下流行的系统架构方案中,前端和后端都是分离开的。 目的:① 为了方便前端开发人员和后端开发人员可以同时开发;② 前后端分离也使得前后端的代码可以分开进行管理,方便了各自的版本迭代及控制。 1.1前端校验 就是通过前端...https://www.pianshen.com/article/90762848064/
12.前端产品经理和后端产品经理的主要区别是什么大白PM总结:前端产品和后端产品最大的不同是产品形态的不同、面向用户群体的不同。探讨前端产品经理和后端产品经理的主要区别我认为核心还是探讨前端产品和后端产品的区别。 前端产品经理 也叫2C产品经理或C端产品经理或客户端产品经理。主要面向普通用户或被服务者。比如**点评客户端,团购客户端,打车客户端等等。这...https://www.jianshu.com/p/53f7a203bce1