数字IC设计流程

基本流程概述

1、项目需求:确定芯片的具体指标(spec)

  • 物理:工艺、面积、封装;
  • 性能:速度、功耗;
  • 功能:功能表述、接口定义。

2、系统级设计:用系统建模语言对各模块进行描述
3、前端设计:RTL设计、仿真、硬件原型验证、电路综合
4、后端设计:版图设计、物理验证、后仿真
5、封装和测试:

在这里插入图片描述

数字IC设计流程

在这里插入图片描述

数字前端

1. 架构/算法设计分析

  • 目的完成芯片中数字部分的高层次算法或架构的分析与建模,为硬件提供一个正确的软件功能模型,更为重要的是,通过大量的高层次仿真和调试,为RTL实现提供总体性的设计指导。数字部分越复杂,这一点越重要。
  • 工具:MATLAB、C++、C、System C、System Verilog等。不同类型的芯片都不同的选择,如数字信号处理类芯片,偏好MATLAB。
  • 特点:这部分工作至关重要,基本上奠定了整个芯片的性能和功耗的基础。这部分工作主要由具有通信、信号处理、计算机、软件专业背景的工程师完成,也有很多微电子专业背景的工程师参与。

2. RTL实现

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

  • 工具:GVim/Emac、Verilog/VHDL

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

3. 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在市场中占有垄断性地位,几乎成为逻辑综合的标准。

  • 特点:
    a.从芯片生产的角度来看,在该步骤之前,所有的工作都可近似看做一个虚拟性的,与现实无关。而从逻辑综合起,后续所有的工作都将与工艺的物理特性、电特性等息息相关。逻辑综合工具的功能主要是将VerilogHDL格式的文本映射为网表格式的文本,因此,它的功能等同于文本编译器。那么转换的方式有很多种,工具如何选取呢?逻辑综合过程中,整个文本格式的编译过程是在给定的人为约束条件下进行的,通过这些约束和设定的目标来指导工具完成Compiler的工作。所以,逻辑综合过程可以看成一个多目标(频率、面积、功耗)多约束的工程优化问题
    b.该步骤中,通常会插入DFT、clock gating等。
    c.该步骤中通常加入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文件
  • 特点:
    a.从逻辑综合开始,基本上每做一步大的调整,都会完成一次STA分析,以保证每步都能实现时序收敛。鉴于该特性非常重要,PrimeTime成为了Signoff的重要工具。
    b.所用到的SDC同逻辑综合;
    c.通常设计中会存在大量的违例路径,STA要修大量的setup、hold等,如何修这些违例,可以体现工作经验的重要性。此外,如果是前端修timing违例,一般会修的很快,但是会带来一个重大的问题,代码被前端修改后是否存在新的bug,还需重新仿真确认,仿真会消耗掉数以月计的时间,所以除非万不得已,不会找前端修timing。
    在这里插入图片描述
    注:静态时序分析和形式验证这属于验证范畴。
    STA主要是在时序上对电路进行验证,检查电路是否存在建立时间(setup time)和保持时间(hold time)的违例(violation)。而形式验证是从功能上对综合后的网表进行验证。常用的就是等价性检查(LEC)方法,以功能验证后的HDL设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。
    静态时序分析和形式验证出现在设计流程中前后端过程,有一些地方在前端中没有提到,应该是在后端当中比较重要,作为验证设计工作的一部分,在前端中也加入静态时序分析和形式验证可以提高设计的可靠性。

数字后端(待补充)

数字后端设计又称物理设计,将网标格式的文本转化成一个个有物理大小和位置的单元、连线。并且在实现过程中要满足面积、功耗、性能等要求。
业界主流的后端工具来自synopsys、cadence两家公司,虽然两家公司工具不同但是基本流程相似。数字后端流程如下图
在这里插入图片描述

数字IC设计笔试题简答

  • 1.需求分析(制定规格书): 分析用户或市场的需求,并将其翻译成对芯片产品的技术需求
  • 2.算法/架构设计:
    a.算法设计:设计和优化芯片钟所使用的算法。这一阶段一般使用高级编程语言(如 C/C++),利用算法级建模和仿真工具(如 MATLAB, SPW)进行浮点和定点的仿真,进而对算法进行评估和优化。
    b.构架设计:根据设计的功能需求和算法分析的结果,设计芯片的构架,并对不同的方案进行比较,选择性能价格最优的方案。这一阶段可以使用 SystemC 语言对芯片构架进行模拟和分析。
  • 3.RTL 设计(代码输入): 使用 HDL 语言完成对设计实体的 RTL 级描述。这一阶段使 用 VHDL 和 Verilog HDL 语言的输入工具编写代码。
  • 4.RTL 验证(功能仿真): 使用仿真工具或其他 RTL 代码分析工具,验证 RTL 代码的 质量和性能。
  • 5.综合:从 RTL 代码生成描述实际电路的门级网表文件。
  • 6.门级验证(综合后仿真):对综合产生的门级网表进行验证。这一阶段通常会使用仿
    真、静态时序分析和形式验证等工具。
  • 7.布局布线:后端设计对综合产生的门级网表进行布局规划(Floorplanning)、布局 (Placement)、布线(Routing),生成生产用的版图。
  • 8.电路参数提取:确定芯片中互连线的寄生参数,从而获得门级的延时信息。
  • 9.版图后验证: 根据后端设计后取得的新的延时信息,再次验证设计是否能够实现所有 的功能和性能指标。
  • 10.芯片生产: 生产在特定的芯片工艺线上制造出芯片。
  • 11.芯片测试: 对制造好的芯片进行测试,检测生产中产生的缺陷和问题

参考:
[1]: https://www.zhihu.com/question/19863045
[2]: 研分–摩文数字IC设计课程
[3]: 路科验证笔试真题 100 题.pdf

### 数字IC设计项目概述 数字IC设计是一个复杂而系统的工程过程,涵盖了从概念到最终产品的多个阶段。以下是关于数字IC设计项目的相关信息和实现方法: #### 1. 设计流程概览 数字IC设计可以分为前端设计和后端设计两个主要部分。 - **前端设计** 前端设计的主要目标是从功能需求出发,完成逻辑电路的设计与验证。这一阶段的关键步骤包括规格定义、RTL编码、功能仿真以及综合等[^1]。此外,在现代复杂的SoC设计中,DFT(Design For Test)也成为不可或缺的一部分,用于提高测试覆盖率和降低生产成本[^4]。 - **后端设计** 后端设计则关注物理实现,即将转化为实际可制造的GDSII文件。此过程中涉及布局规划、时钟树合成、布线优化等多个环节[^2]。通过严格的签核流程确保信号完整性与时序收敛,从而满足性能指标要求。 #### 2. 工具链支持 在整个开发周期内,工程师依赖于多种EDA软件来辅助完成各项任务。例如Synopsys Design Compiler用于逻辑综合;Cadence Virtuoso适用于模拟混合信号版图编辑;Mentor Graphics Calibre负责最后的产品验证等等[^3]。这些工具不仅提高了工作效率,还保证了高质量的结果产出。 #### 3. 资源获取途径 对于希望深入学习或者参与具体实践的人来说,可以从以下几个方面入手寻找所需材料: - 官方文档和技术白皮书 – 大多数主流供应商都会提供详尽的应用指南; - 开放课程平台如Coursera、edX上有由顶尖大学开设的相关科目可供选修; - 社区论坛像VLSI Planet、All About Circuits聚集了许多专业人士愿意分享见解解答疑问; - 此外还有专门针对某一细分领域编写的书籍推荐列可以帮助构建扎实理论基础的同时紧跟行业趋势变化。 ```python # 示例代码展示如何调用基本EDA API接口进行简单操作 import pyeda.inter as eda def create_netlist(): circuit = eda.Network() # 添加输入节点 inp_a = circuit.add_input('A') inp_b = circuit.add_input('B') # 创建逻辑门实例 and_gate = circuit.add_and([inp_a, inp_b]) output_node = circuit.add_output(and_gate) return str(circuit) ``` 以上脚本片段演示了一个小型布尔达式的络结构生成器函数原型示意。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值