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

芯片在我们的生活和工作中无处不在。例如,交通智能卡就嵌入了一颗带有微处理器、储存单元、芯片操作系统的芯片;而手机的主板则集成了数百颗芯片,有的负责无线电收发、有的负责功率放大、还有的负责存储照片和文件、处理音频,完成指纹、虹膜、面部的识别。当然,手机中最重要,也是价格最昂贵的还属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.前端与后端哪个更难?其实有些时候相比较是不应该的,首先不论什么你要知道他都是不可或缺的,所以难易不好区分,妹妹有人...https://m.imooc.com/wenda/detail/316666
1.前端开发和后端开发哪个难互联网前端后端很难吗前端开发和后端开发都有各自的难点和挑战,难易程度取决于个人的技能、经验和偏好。以下是对比前端开发和后端开发的一些方面: 前端开发: 技术栈多样性:前端开发需要掌握HTML、CSS和JavaScript等技术,同时还需要熟悉各种前端框架和工具(如React、Vue、Angular、Webpack等)。 https://blog.csdn.net/u010605984/article/details/137156438
2.前端比较后端相比,哪个逻辑更难一点?网友(霍奇)职场问答前端的复杂度一般都会比后端高,因为要考虑的交互、前端逻辑很多,这种业务场景下,后端只需要提供相应...https://zq.zhaopin.com/question/7165701/
3.科技爱好者周刊(第193期):前端与后端,谁更难?即使那些最简单的任务,现在的开发方式也比以前复杂,要考虑很多边界场景。我能够完成的工作,不断得缩小。 我失去了继续在前端工作的信心,转到后端,会不会容易一些。 简单说就是,他觉得前端越来越难,自己跟不上,无法坚持下去了。他想知道,后端会不会更容易一些,转成后端开发是否可行? https://www.ruanyifeng.com/blog/2022/01/weekly-issue-193.html
4.芯片设计前端和后端哪个更有难度如何理解Web前端和后端的工作内容和区别? Web前端和后端的区别是什么?如何区分?从前端和后端两者工作内容和负责项目是完全不同。后端:入门难深入更难,枯燥乏味,看业务逻辑代码;前端:入门简单先易后难,能看到自己做出来的展示界面,有成就感。 2020-09-18 16:11:43 ...https://www.elecfans.com/zt/1244010/
5.女生学前端开发难吗女生学前端开发难吗?提及前端开发,大家可能立马会浮现编程、代码、计算机等关键词,所以很多同学在潜意识中都会将它认定为专业性强、学习壁垒高的计算机编程技术。其实比起后端开发,前端开发属于浅层技术,不需要有深厚的编程技能土壤,零基础也可以学习的。 什么是前端开发? https://www.hxsd.com/content/13140/
6.面试题2023中级前端面试题从前端学习到找一份合适的工作,大大小小的面试必不可少,所以我对初级前端面试题进行了初步整理,也方便自己查阅,也希望对小伙伴们有所帮助! HTML HTML语义化 HTML语义化就是让页面内容结构化,它有如下优点 1、易于用户阅读,样式丢失的时候能让页面呈现清晰的结构。 https://blog.51cto.com/u_14627797/5928385
7.前端和后端哪个容易被ai取代?一、前端和后端哪个容易被ai取代? 在当前的技术发展趋势下,前端和后端都存在被取代的可能性。然而,前端开发涉及到用户界面设计、交互体验等方面,需要人类的创造力和审美观念,因此在短期内不太可能被完全取代。 而后端开发则更加注重数据处理、算法设计等技术,这些方面相对更容易被AI自动化实现。但是,无论是前端还是后...https://tool.a5.cn/article/show/90154.html
8....Worker为前端带来了后端的计算能力,十万百万条数据都是如何让前端拥有后端的计算能力,在算力紧缺的年代,扩展前端的业务边界! 前言 页面中有十万条数据,对其进行复杂运算,需要多久呢? 表格4000行,25列,共十万条数据 运算包括:总和、算术平均、加权平均、最大、最小、计数、样本标准差、样本方差、中位数、总体标准差、总体方差 ...https://juejin.cn/post/7137728629986820126
9.全面讨论后端前端客户端的区别全面讨论 后端、前端、客户端的区别 帖子背景 楼主看到今年不少友友暑期实习都或多或少,被客户端岗位打捞起来面试;也有很多友友本来是投的后端,结果拿了客户端的offer,不知道改不改转客户端。 楼主之前在字节的CapCut做过半年的客户端开发实习生,对客户端有一个基本的了解,再加上后端楼主也实习过,所以两个方向...https://m.nowcoder.com/discuss/616306212254015488
10.你们不要再打啦!揭秘前端后端的爱恨情仇腾讯云开发者社区于是前后端间可能会出现如下对话: --后端:你多调几个接口不就行了么~--前端:多好几个 HTTP 请求呢。包成一个接口有这么难么? 前端和后端各有各的道理,还都不肯退让,互相扯皮,互相看不顺眼,所以结合大雄的见解,今天来分析分析为什么前后端总是争吵不断? https://cloud.tencent.com/developer/article/2026627
11.spring中前端明明传了值后端却接收不到问题解决办法java在进行前后端的联调时,有时候会出现,前端明明传了值,后端接口却接收不到的情况,这种情况常常让人很苦恼,然后就会去仔细对比前后端的参数单词是不是对应上了,也会去检查是不是前端的请求参数格式有问题,又或者是后端接口接收的参数格式有问题,一通检查对比下来,发现都没问题。那究竟是为什么呢?那就继续往下看吧。https://www.jb51.net/program/321135yav.htm
12.数字后端面试100问(2019全新版)26. 为什么设计中一般不用最大和最小尺寸的cell? (Place,难度3) 27. 有什么方法可以压缩芯片面积?(Floorplan,难度4) 28. 当chip中有PLL/DDR等analog IP的时候,位置要怎么确定?有哪些需要注意的地方?(Floorplan,难度4) 29. 后端拿到前端网表时,通常要做哪些基本检查?给客户哪些反馈?(综合性,难度4) ...http://www.360doc.com/content/23/1207/11/82595205_1106599880.shtml
13.数据挖掘专业就业方向所以我推测二线城市最多的还是用JAVA+Hadoop,或者用JAVA写一些Spark程序。北上广深和二线城市程序员比待遇是欺负人,就不讨论了。 3.和前端后端程序员比有什么区别?有什么优缺点? 和传统的前后端程序员相比,最主要的去别就是对编程水平的要求。从我招聘的情况来看,做数据挖掘的人编程水平要求可以降低一个档次,甚至...https://www.yjbys.com/qiuzhizhinan/show-571958.html
14.“郑在抗疫·一帮到底”平台上线100天直面群众“急难愁盼”将“怎么...治愈着“已办结”的前端后端 “郑在抗疫·一帮到底”平台上线的100天里,虽然与众多求助人并未见过面,隔着网络和屏幕,求助人在前端,工作人员在后端,但每一次的“已办结”背后,也是相互治愈、相互感动的过程。 “平台是真心实意为百姓服务的!” “太感谢你们了,感谢政府帮我们解决急、难、愁、盼。” ...https://www.henan.gov.cn/2022/04-19/2434613.html