zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【基础知识】~ 集成电路设计流程,以及各阶段所使用的EDA工具

流程基础知识工具 设计 以及 阶段 EDA 使用
2023-09-14 09:10:01 时间

1. 确定项目需求

首先做一款芯片需要有市场,一般公司会先做市场调研,比如最近市面上比较火的人工智能芯片,物联网芯片,5G 芯片,需求量都比较大。有了市场的需求我们就可以设计芯片的 spec了。先由架构工程师来设计架构,确定芯片的功能,然后用算法进行模拟仿真,最后得出一个可行的芯片设计方案。有了芯片的 spec,下一步就可以做 RTL coding 了。

工具

Office

2. 前端设计(架构/算法设计分析)

目的

完成芯片中数字部分的高层次算法或架构的分析与建模,为硬件提供一个正确的软件功能模型,更为重要的是,通过大量的高层次仿真和调试,为 RTL 实现提供总体性的设计指导。数字部分越复杂,这一点越重要。

工具

MATLAB、C++、C、System C、System Verilog 等。
不同类型的芯片都不同的选择,如数字信号处理类芯片,偏好 MATLAB。

特点

这部分工作至关重要,基本上奠定了整个芯片的性能和功耗的基础。这部分工作主要由具有通信、信号处理、计算机、软件专业背景的工程师完成,也有很多微电子专业背景的工程师参与。

3. RTL 实现

目的

依据上一步的结果,完成由高层次描述到 Verilog HDL 实现的过程。

工具

GVim/Emac、Verilog/VHDL

特点

这一步能明显区别中训练有素的工程师和初学者。前者在写代码的过程中,具有极强的大局观,能够在书写 Verilog HDL、描述逻辑功能的同时,还能够兼顾逻辑综合、STA、P&R、DFX、功耗分析等多方面因素,最终提供一份另其他环节的工程师都赏心悦目的代码。初学者则处处留地雷,一不小心就引爆。

Coding Style Check

目的:排除 RTL 代码中 CDC(Clock Domain Cross)、Lint 等问题。

CDC:跨时钟域检查

LInt:代码潜在问题检查(例如 A+B 的进位溢出)

工具:Syglass、LEDA、0inCDC

特点:目前大部分芯片中的数字部分基本上都采用局部同步和全局异步的设计策略,因此,在设计中需要小心注意跨时钟域的数据同步问题。

输入:RTL,SDC,lib/sglib
输出:wave file,report

4. 功能验证

目的

在无延迟的理想情况在,通过大量的仿真,发现电路设计过程中的人为或者非人为引起的 bug。主要指标是功能覆盖率。

工具

Modelsim、VCS、NC-Verilog、(DVE/Verdi 波形查看器)

语言

C++、C、System C、System Verilog,基于 UVM 的方法学等。主要是 System Verilog,一般哪个方便用哪个。

特点

验证工程师近年来已经成为 IC 设计中需求量最大的岗位。这个阶段会占用大量的时间,数以月计。

5. 逻辑综合+DFT

目的

将 RTL 代码映射为与工艺库相关的网表。

工具

DesignCompiler、RTL Compiler。
DesignCompiler 在市场中占有垄断性地位,几乎成为逻辑综合的标准。

特点

  1. 从芯片生产的角度来看,在该步骤之前,所有的工作都可近似看做一个虚拟性的,与现实无关。而从逻辑综合起,后续所有的工作都将与工艺的物理特性、电特性等息息相关。逻辑综合工具的功能主要是将 VerilogHDL 格式的文本映射为网表格式的文本,因此,它的功能等同于文本编译器。那么转换的方式有很多种,工具如何选取呢?逻辑综合过程中,整个文本格式的编译过程是在给定的人为约束条件下进行的,通过这些约束和设定的目标来指导工具完成 Compiler 的工作。所以,逻辑综合过程可以看成一个多目标(频率、面积、功耗)多约束的工程优化问题。
  2. 该步骤中,通常会插入 DFT、clock gating 等。
  3. 该步骤中通常加入 Memory、各种 IP 等。为了在各种工艺库以及 FPGA 原型验证平台之间有一个更方便的移植,注意适当处理这些 Memory、IP 等的接口。该步骤中也可加入 I/O、PLL 等。

DFT(Design For Test)

为了保证芯片内部的制造缺陷尽量能够被检测到,通过在电路中插入扫描链(Scan Chain)的方式,测试 IC 在生产制造过程中是否出现问题。加入 DFT 会增加 20%~30%的面积。但为了保证良率,为了给客户的片子是合格的需要将具有缺陷(工厂制
造缺陷)的片子筛除。

输入文件:
a.RTL 代码:由 ASIC design engineers 团队提供;交接前,必须保证在第 3 步的 check 中没有任何问题;
b.工艺库(.db):由晶圆厂提供;
c.约束(SDC):由逻辑综合工程师和 ASIC design engineers 共同商定。

输出文件:
a.网表:包含了 RTL 中的所有的逻辑信息,除此以外,可能还会有 DFT、clock gating、I/O等;网表主要用于 P&R 等流程;
b.标准延迟文件 SDF:主要包含了网表中所有器件的延迟信息,用于时序仿真;PT 会结合后端工具生成的一个更为精确的 sdf ,所以,通常会用 PT 的 sdf 文件做后仿真。Project 文件:.ddc;
c.各种报告:timing report、area report、constrain report、clock report、violation report 等等,以及工具的 log 文件。(此处最好能够熟悉各种脚本语言,将各种 report 处理为友好易读形式)

6. 形式验证

目的

RTL 代码和逻辑综合后的网表是否具有一致的功能。(尤其是在后端做 ECO 的时候)

工具

Formality、Conformal

输入文件

RTL 代码、netlist(逻辑综合输出)、约束

输出文件

match 和 verify 报告。

7. 静态时序分析

目的

分析设计中所有的路径,确保满足内部时序单元对建立时间和保持时间的要求。

工具

PrimeTime、Tempus。
PrimeTime 在市场中占有垄断性地位,几乎成为 STA 的标准

输入

spef 文件、PnR 网表,标准单元库 db 文件,IP 的 dp 文件

输出

SDF,timing ECO 文件

特点

  1. 从逻辑综合开始,基本上每做一步大的调整,都会完成一次 STA 分析,以保证每步都能实现时序收敛。鉴于该特性非常重要,PrimeTime 成为了 Signoff 的重要工具。
  2. 所用到的 SDC 同逻辑综合;
  3. 通常设计中会存在大量的违例路径,STA 要修大量的 setup、hold 等,如何修这些违例,可以体现工作经验的重要性。此外,如果是前端修 timing 违例,一般会修的很快,但是会带来一个重大的问题,代码被前端修改后是否存在新的 bug,还需重新仿真确认,仿真会消耗掉数以月计的时间,所以除非万不得已,不会找前端修 timing。

注:静态时序分析和形式验证这属于验证范畴。

STA 主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。而形式验证是从功能上对综合后的网表进行验证。常用的就是等价性检查(LEC)方法,以功能验证后的 HDL 设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。

静态时序分析和形式验证出现在设计流程中前后端过程,有一些地方在前端中没有提到,应该是在后端当中比较重要,作为验证设计工作的一部分,在前端中也加入静态时序分析和形式验证可以提高设计的可靠性。

8. 后端设计

Place & Route 一般由后端工程师来做,Physical Design Engineer.
后端里 DRC 就是要检查设计规则是否符合芯片制造商的要求,这样才能正确的生产芯片。
后端完成工作后,最终会生成 GDSII 格式的文件,交由芯片制造商流片。

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得收藏+评论!!!