【ASIC VS FPGA开发流程】

1 ASIC开发设计流程

【博客首发于微信公众号《漫谈芯片与编程》,欢迎专注一下,多谢大家】

数字IC的设计流程:

  • 前端设计(逻辑设计):从规格到门机网表Netlist的过程;
  • 后端设计(物理设计):重点是到GDSII版图;
    下面这张图非常详细:
    

1.1 前端设计

1.规格制定:根据具体功能和性能指标需求制定芯片规格Spec----根据市场或客户需求;
2.架构设计:给出设计方案和具体实现架构,会将系统功能进一步划分子系统及各子模块,定义接口时序;
具体实现:都会进行严格的架构分析与建模:为硬件提供一个正确的软件功能模型,以及为RTL实现提供一个设计指导;
工具:–Matlab、C++/C、SystemC;
3.RTL编码:根据功能需求,给出模块方案框图,再用硬件描述语言Verilog等来具体编码逻辑实现;
具体工具:Vim/Emac; VCS/Xrun; Verdi/Simvision; Syglass/LEDA/OinCDC;
4.功能验证(前仿真):根据模块或者系统的Design Spec来分解出来测试点来对RTL代码进行功能验证,检验设计功能的正确性;具体是写一个个的testcase来进行功能验证,从而发现设计bug;–衡量指标:覆盖率;
具体工具:Vim/Emac; VCS/Xrun; Verdi/Simvision;
5.逻辑综合:将RTL代码翻译成门级网表NetList; 综合需要设定约束条件:即希望综合出来的电路再面试、时序等目标参数上达到的标准;逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元cell的面积,时序参数是不一样的。
具体工具:Design Compiler; Synplicity;

6.静态时序分析STA–时序收敛: 主要在时序上对电路进行验证:检查电路路径是否存在建立时间和保持时间的违例;
目的:保证设计中的所有路径都能满足时序单元对建立时间和保持时间的要求;
–无论起点是什么? 信号都可以及时地传递到该路径地终点;在电路正常工作时所必须的时间段内保持稳定;
具体工具:PrimeTime、Tempus;
从逻辑综合开始,基本上每做一步大的调整,都会完成一次 STA 分析,以保证每步都能实现时序收敛。


  • 在布图前,PrimeTime使用由库指定的线载模型估计线网延时。
  • 在布图后,实际提取的延迟被反标注到PrimeTime以提供真实的延迟计算。

8.逻辑等价性检查:是对综合后的网表进行验证;检查通过数学方式比对RTL和Netlist的功能是否一致;即以功能验证过后的HDL设计作为参考,对比综合后的网表功能,是否在功能上存在等价性;–确保逻辑综合过程中没有改变原先HDL描述的电路功能;
具体工具:Formailty;

1.2 后端设计

1.DFT:可测性设计,在设计中插入扫描链:SCAN、Mbist、ATPG 技术等。为了保证芯片内部的制造缺陷尽量能够被检测到,通过在电路中插入扫描链(Scan Chain)的方式,测试IC在生产制造过程中是否出现问题。加入DFT会增加20%~30%的面积。但为了保证良率,为了给客户的片子是合格的需要将具有缺陷(工厂制造缺陷)的片子筛除。–DFT的目的就是在设计时就能够考虑到将来的测试;
DFT结构加入之后,也要进行形式验证和时序分析,保证设计的功能正确性
具体工具:DFT Compiler;
2.Design Setup: 将Design导入后端工具后,检查输入文件是否缺少或者有错误,确保design正常;
3.Floor Plan: 布局规划即放置芯片的宏单元模块,在总体上确定各种功能电路的拜访位置,如IP模块,RAM,I/O引脚,布局规划能直接影响芯片最终的面积;确定 design 的形状大小,给出 Pin 的位置,以及所有 macro 的摆放。
具体工具:Astro;
4.Placement 将所有 标准单元 standard cell 放入 core area 中,并且满足 congestion(拥塞) 和 timing 的要求。
5.Prects: 在 Place 之后 CTS 之前,我们会对进行一次 setup timing 优化。只优化 setup,原因是 clock tree 还没做,所有 clock 都是 ideal 的。
6.CTS:时钟树综合即时钟的布线:时钟信号在数字芯片的全局指挥作用,它的分布应该时对称式的连接到各个寄存器单元,从而使得时钟从同一个时钟源到达各个寄存器延时、时钟延迟误差最小。
工具:Synopsys 的 Physical Compiler;
7.Routing: 普通信号布线,包括各种标准单元(基本逻辑门电路)之间的走线;
8.寄生器参数提取和信号完整性分析:根据布局布线的结果,提取出最真实的延时信息,然后用于后仿。此外,由于导线本身存在的电阻,相邻导线之间的互感、耦合电容在芯片内部会产生信号噪声、串扰和反射。提取寄生参数进行再次分析验证,分析信号完整性问题。
9.后仿真:基于网表和SDF延时反标文件,进行逻辑仿真、时序分析等。
10.ECO: Engineering Change Order:后仿真中个别路径有时序或逻辑错误时,对设计进行小范围的修改。
在复杂的设计流程中,bug是难以避免的。对于芯片设计而言,bug自然是越早发现越好。但是仿真验证差不多,进入RTL freeze阶段后,一旦发现新的bug,就变得有些麻烦。因为RTL freeze前,你可以通过修改RTL来更正你发现的bug。然而 RTL freeze之后,后端人员做好了floorplan,或者已经开始布局布线,这个时候再去重新做一遍,既耗时耗力,又会极大消耗后端。ECO–直接手动修改netlist。

2 FPGA开发流程


在FPGA开发之前,有一个重要的步骤就是:方案论证、系统设计和FPGA选型;

  • 设计定义:计定义指的是我们要明确所设计的模块或系统的功能,模块划分;
  • 设计输入:设计所采用的设计方法:原理图/IP/HDL;
  • 分析综合:表面上是报告设计中的语法和逻辑错误,实际上是反映设计输入所表述的逻辑电路功能是否能正常实现。
  • 功能仿真:通过功能仿真的时序来验证设计是否满足要求,即搭建testbench和编写testcase;
  • 布局布线:功能仿真不存在问题就可以开始布局布线,布局布线是将设计输入的逻辑电路布局布线到FPGA芯片内部。
  • 时序仿真:时序仿真也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规,时序仿真包含的延迟信息最准确。
  • 板级调试:下载烧写a.通过JTAG配置到FPGA芯片中,来上版进行验证功能;也可以通过逻辑分析来查看具体信号,比如SignalTap-II和ILA等功能;

【ref】
1.https://blog.csdn.net/Tranquil_ovo/article/details/129902653
2.https://blog.csdn.net/qq_36045093/article/details/124659801

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值