写在前面:数字芯片从设计到实现是一个工作细分程度很高的过程,一枚芯片的产生需要数个团队的共同努力才能实现既定的功能。了解芯片的设计流程,有助于大家理解自己的工作定位,更出色地完成自己的工作。本篇文章将简单介绍一下数字IC前端的部分工作内容,并在此基础上推荐了一些笔者认为很经典的学习资料,希望能与各位读者共勉。
关注公众号【TechDiary】后台回复“IC资料”,可以获得更多本文相关资料。
芯片从设计到实现的过程大致可以分为前端逻辑设计 与 后端物理设计工作。其中:
- 逻辑设计:将声明功能与特性的设计书转化为芯片的门级网表
- 物理设计:将门级网表转化为可以直接交付给代工厂的物理版图,进入流片过程
个人认为,如果有电路PCB设计经验的朋友可以将逻辑设计的产出理解为电路设计中的原理图,仅有电路单元与连接关系;而物理设计的产出就如同PCB文件,是经过布局布线后的文件;我们将PCB文件交给制板厂进行制作后就可以得到实际电路板,芯片的流片也是类似。
本文的主要内容是前端逻辑设计的流程,将分为以下几点介绍:
- 功能声明与架构文档的制定
- RTL设计
- 仿真验证
- 逻辑综合
- 静态时序分析
- 形式验证
一、明确功能,划分职责——功能声明与架构文档的制定
芯片逻辑设计的第一步就是要明确芯片需要实现的功能,以及一些对频率、面积、功耗的需求。在结合实际情况与以往经验的情况下,设计之初会形成一个明确的功能spec文档,接下来的所有工作将会围绕这个文档展开,其重要性可见一斑。
根据功能声明的文档,会根据以往经验提出相应的解决方案,进行架构的设计以及模块的划分,在这一步会确定系统的构成以及子模块的输入输出。
以上两个文档是整个芯片开发流程中的核心文档,描述出了芯片的“骨架”,通常需要经验丰富的工程师讨论制定。