芯片的设计流程

电子说

1.3w人已加入

描述

1. 绪论

经过了立项和规格和计划的确认,此处我们开始讲芯片设计。

这个内容就挺多了,也可能是大家最关心的一个部分,可能要分几次讲。在整个流程中处于这位置。

芯片

此处由于我自己还是对数字芯片系统更了解,所以按数字的来。模拟芯片的设计流程后续有精力或者请个大佬补个概述。芯片的设计流程还是比较长的,我们先来个birdmap。这个图很复杂,看不懂的名词不要慌,我会一步一步讲。

芯片

2. 算法设计

芯片

我们先来讲第一部分,这个部分其实比较简单。所以就在此处讲讲,后续不再单独开章节来讲这个东西。芯片最终还是算法的一种加速。如果一个东西你用C++都实现不了,芯片怎么可能实现。第一步就是算法。

算法实现其实有两个步骤的。为什么有两个步骤呢,这就涉及到浮点和定点的区别。浮点精读高,但是硬件实现代价大,定点成本低,硬件实现代价小。一般先设计浮点算法,然后再牺牲一点精度,搞成定点算法。

浮点算法设计浮点算法偏重于功能,由于浮点精度高,最原始的功能一般会用浮点实现。比如你要整一个AI芯片,你首先得用pytorch或者tensorflow训练出一个浮点网络,看看效果是不是还行,能不能实现网络正常的功能。算法链路先测试好了后续才能用芯片加速。浮点算法一般由纯软件工程师设计的。他们并不需要知道硬件实现,只需要对功能的正确性负责即可。

定点算法设计定点算法就是找个位置,把浮点中的指数为给归一了。精度是肯定会损失的,但是换来了硬件设计的简单。这个也容易理解,用芯片算一个3.5+0.025和用芯片算一个3500+25复杂程度完全不一样啊。为了平衡精度和定点位宽,此处定点化可以有各种门道,比如采用批处理的定点化,一部分数据采用一个定点位置,另一部分数据采用另一个定点位置等等。总之就是,这一步实现的是如何用最小的定点位宽,在精度可接受的前提下实现浮点的算法。

3. 前端设计

和其他一些复杂的东西类似,比如编译器,网站等等类似,芯片设计也有前端和后端之分,前端到网表,后端到版图。

芯片

前端主要包含4个步骤:文档设计、编码、验证、前端实现。主要就是从设计需求到网表的一个流程。

4. 后端设计

这个步骤,主要是把网表整成我们最后的版图。可以直接丢给代工厂生产了。

芯片

一共7个步骤。此处给个概述,后面专门写文章介绍。

准备:这一个步骤中准备主要是准备一些库文件,前端准备好的网表,划分好harden, 然后穿线。

设计规划:设计规划主要是摆放一些大件,比如memory硬核,IO PAD, 电源网络等等,方便下一个步骤摆放小单元。

布局:这个步骤就把具体的单元摆放到版图上。

综合时钟:把时钟网络摆放好,保证到各个地方的长度都差不多。

布线:真正把线联通。此处会通过STA,不断调整布局以及routing。

ECO:版图搞定后,需要工程师手动修一些东西。

芯片收尾:加入dummy, filler cells等等,让密度满足光刻需求。

最后验证:交芯片前,最后再验证一把。主要包含了后仿,形式验证,物理验证。

这7个步骤完成以后,就可以交版图给代工厂了,接下来就是等芯片回片。

最后的输出大概这设个样子的。

芯片

5. 总结

本篇内容是芯片设计的提纲。这个阶段的输入是设计需求,输出是芯片版图。设计主要涉及到3方面的内容,算法设计,芯片前端设计,芯片后端设计。一整个流程很长,至此芯片的设计过程就结束了,下一个过程就是制造!

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分