数字IC设计流程以及FPGA开发和数字芯片设计关系

您所在的位置:网站首页 verilog转换成电路图 数字IC设计流程以及FPGA开发和数字芯片设计关系

数字IC设计流程以及FPGA开发和数字芯片设计关系

2024-07-16 07:32:11| 来源: 网络整理| 查看: 265

给出结论:

数字芯片设计包括:数字前端和数字后端,具体划分:数字前端、数字验证、DFT(Design For Test)和数字后端。

数字IC设计和FPGA开发的关系:数字IC设计前端(和你具体的是数字IC前端的设计部分,也就是芯片功能代码编写部分)和可以理解为FPGA开发;同时还有一些嵌入式FPGA开发工程师,专门用FPGA实现某一场景的功能,也是一种职业。

其实很多人都会有疑问,我们做FPGA开发到底和数字芯片设计有什么关系,或者说两者有什么区别,最近我做了一些调研,因为我个人打算做数字IC前端设计,所以后端的内容可能讲的会浅一些,OK!大概分以下几方面为大家阐述:

FPGA和数字ASIC的区别做FPGA开发转ASIC需要补充哪些学习内容做数字IC工程师需要具备哪些技能

文章比较长,同时不能把内容讲的很全面,不过看完本文会对数字IC设计有所了解,对进一步学习会很有帮助。

一:FPGA和数字ASIC的区别

先上一张图,然后展开讲解:

层面FPGA)ASIC时钟设计推荐同步时钟设计;全局时钟驱动异步时钟设计;全局门控时钟树驱动布线方式布线较为局限布线很灵活功耗较高较低设计频率相对较低相对较高设计周期短长开发成本低高产品价格高低灵活性易于修改,可重复编程不可修改,不能重复编程应用适合于不断演进的标准高速、复杂、低功耗设计时钟设计

首先同步几个概念:

同步时钟:当两个时钟间的相位是固定关系的,则可以称这两个时钟为同步时钟(synchronous clock)。一般同源,如同一个MMCM or PLL产生的两个时钟可以称为同步时钟,因此可以将主时钟和与之对应的衍生时钟约束成同一个时钟组。简单理解就是假如一个时钟1G,一个时钟是2G,2G/1G = 2(整数),为同步时钟。

异步时钟:无法判定两个时钟间相位时,则可以称这两个时钟为异步时钟(asynchronous clocks)。通常情况下设计中不同的主时钟一定是异步时钟,因此可以将这两个主时钟及其衍生时钟约束成不同的时钟组。简单理解就是假如一个时钟1G,一个时钟是1.5G,1.5G/1G != 整数,为异步时钟。

时钟树:由许多缓冲单元(buffer cell)平衡搭建的网状结构,有一个源点,一般是时钟输入端(clock input port),也有可能是design内部某一个单元输出脚(cell output pin),然后就是由一级一级的缓冲单元搭建而成,具体的多少级,根据你的设置以及所使用的单元而定,目的就是使所用终点的clock skew(一般最关心这个)、insertion delay以及transition了,满足设计要求。

门控时钟:在数据无效时,将寄存器时钟关闭的技术,能够有效降低功耗,是低功耗设计的重要方法之一。门控时钟是一个逻辑模块,在寄存器的输入数据无效时,将寄存器的输入时钟置为0,而此时寄存器值保持不变,此时没有时钟翻转,避免了动态功耗。

看完这几个概念之后,可能对FPGA和ASIC时钟设计有一定的概念了。

(1)FPGA时钟管理

在FPGA设计中采用全局时钟(同步时钟)资源驱动设计的主时钟,目的达到最低的时钟抖动和延迟。FPGA 全局时钟资源一般使用全铜层工艺实现,并设计了专用时钟缓冲与驱动结构,从而使全局时钟到达芯片内部的所有可配置单元(CLB)、I/O单元(IOB)和选择性块RAM(Block Select RAM)的时延和抖动都为最小,如下图所示。为了适应复杂设计的需要,Xilinx的FPGA中集成的专用时钟资源与数字延迟锁相环(DLL)的数目不断增加。

FPGA的时钟包括三种,附一张A7的FPGA时钟图:

1)全局时钟

FPGA的全局时钟是从晶振分出来的,最原始的频率。其他需要的各种频率都是在这个基础上利用PLL或者其他分频手段得到的,上面的图BUFG是全局时钟缓冲器,可用作时钟使能电路,以使能或禁用跨越多个时钟区域的时钟。

2)区域时钟

上图中的BUFR为区域缓冲器,驱动同一时钟区域中的所有时钟目的地,并可编程输入时钟频率。

3)IO时钟

IO时钟缓冲器(BUFIO)驱动I/O时钟,提供对同一I/O bank中所有时序I/O资源的访问,上图中没有标出。

这里不详细介绍FPGA时钟管理,下面的文章讲的还不错。

Xilinx 7系列FPGA架构之时钟资源(一)

(2)ASIC的是时钟设计

上图的STM32F4的时钟,搞过嵌入式的都知道,我们在配置时钟时需要对时钟的使能,不然肯定是不可以用的,在这里我们可以理解为STM32采用门控时钟驱动。

总结:

FPGA推荐采用同步时钟设计,但是有时避免不了跨时钟域操作,下面的FPGA跨时钟域的说明

FPGA基础知识19(FPGA异步时钟设计中的同步策略 异步时钟 打两拍 握手机制)

其实两者最大的区别是:

(1)FPGA时钟树已经给定,我们只需要配置,而ASIC需要后端设计人员设计时钟树。

(2)FPGA未采用门控时钟设计,而ASIC一般为门控时钟驱动。

2. 布线方式

(1)FPGA的布局布线

FPGA是由许多的逻辑单元构成的,逻辑单元包括门、查找表、和触发器。它们的位值已经固定,使用FPGA厂商提供的软件工具,根据所选芯片的型号将综合输出的网表适配到具体FPGA器件上,这个过程就叫做布局布线。所谓布局(Place),指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终结果(在速度和面积两个方面)影响很大。所谓布线(Route),是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各个元件的过程。FPGA的结构相对复杂,为了获得更好的实现结果,特别是保证能够满足设计的时序条件,一般采用时序驱动的引擎进行布局布线,所以对于不同的设计输入,特别是不同的时序约束,获得的布局布线结果一般有较大的差异。

(2)ASIC的布局布线

上图可以看到,ASIC的布局布线较为复杂,需要按照设计规则,灵活布线。

3. 功耗

之所以FPGA功耗比ASIC高,与FPGA内部结构有关,FPGA基于占用大量硅面积的、每个单元六个晶体管的静态存储器(SRAM)的查寻表(LUT)和配置元件技术的FPGA,其功耗要比对等的ASIC大得多。查找表结构含义可以理解为使用查找表结构来实现一部分功能,会有资源的浪费。ASIC可以使用低功耗技术,像门控时钟、DVFS(SOC级别技术)等技术降低功耗。

4. 设计频率

实现同样的功能,做成ASIC的频率至少高于FPGA实现的2~3倍,这里简单说明ASIC的频率为什么会比ASIC的设计频率高:

FPGA内部是门、查找表、触发器,每个硬件单元的位值固定,为了实现我们的功能,进行搭积木的操作,这就会出现以下问题:

(1)布局方面(器件导致的延迟),FPGA无法改变每个硬件资源的位置,增加了布线的长度,ASIC相对比较灵活,可以根据需求摆放逻辑单元的位置。

(2)布线方面(走线延迟),FPGA由于逻辑单元的位置增加布线长度,还有本身的LUT结构,也会增大信号传输的时延。

详细可以参考:

为什么ASIC的频率可以达到GHz,而FPGA只能达到几百MHz?

5. 设计周期

这里给出两张图

FPGA开发流程

大概可以看出,ASIC开发周期要比FPGA长很多,主要的时间差还差在ASIC设计中验证和后端。

6. 开发成本

ASIC比FPGA开发成本高主要有以下几点原因:

(1)ASIC开发周期比FPGA开发周期长,会投入更多的人力资源。

(2)ASIC流片费用很贵,Cost=Masks+N×Wafers,即:价格 = 掩膜+N×硅片,掩膜的费用较高。

7. 产品价格

上面阐述实现同样功能,FPGA相对于ASIC有大量的资源冗余,或者说FPGA结构更为复杂,导致相同的产品做成FPGA的价格要高于ASIC。

注:虽然流片成本高,Cost=Masks+N×Wafers,主要还是在Masks,如果量产上亿颗,每个硅片的价格显然会下降。

8. 灵活性

FPGA(Field Programmable Gate Array)

ASIC(Application Specific Integrated Circuit)

9. 应用

(1)因为FPGA具有灵活性,所以用到适合于不断演进的标准中,或者是用量比较小的场景。

(2)因为ASIC的性能比FPGA强,所以适用于高速、复杂、低功耗设计。

二:做FPGA开发转ASIC需要补充哪些学习内容

首先先同步几个概念:

亚稳态和跨时钟域的概念:

亚稳态与跨时钟域

建立时间:时钟沿到来之前数据所要保持稳定的时间。

保持时间:时钟沿到来之后数据所要保持稳定的时间。

DVFS:DVFS 即动态电压频率调整,动态技术则是根据芯片所运行的应用程序对计算能力的不同需要,动态调节芯片的运行频率和电压(对于同一芯片,频率越高,需要的电压也越高),从而达到节能的目的。

STA:静态时序分析,对建立时间和保持时间的分析。

数字IC流程讲解

在这里大概再总结以下数字IC设计,根据下图进行讲解:

(1)系统需求说明

做市场调研,确定数字IC的功能、性能指标、完成设计的基本算法。

(2)高级算法建模与仿真

这部分一般指定数字IC功能的行业人员来做,如做数字信号处理芯片、基带芯片、雷达的芯片,使用matlab对一些算法进行仿真;做数字图像处理的芯片,使用C/C++仿真图像/时频的算法仿真,这两部分一般由通信的专业或计算机专业的人来做。

(3)软硬件的划分和任务的分配

哪些部分用软件来做,哪些部分用硬件来做;软件在操作系统来跑的代码,硬件方面是硬件逻辑电路(底层的晶体管电路)实现。完成这一部分后,分成两路,一路人做软件,一路人做硬件。根据第二步的高级算法建模与仿真,软件做相应的模块,硬件做相应的模块,编写Verilog代码。

(4)软硬件接口的定义

这里可以理解为硬件实现的部分通过什么方式和CPU进行数据交互,常见的硬件接口:IDE(Integrated DriveElectronics,电子集成驱动器)、SCSI(SmallComputerSystemInterface,小型计算机系统接口)、USB、RS232/485、VGA、HDMI、PCIe等。接口选取或定义根据性能指标(吞吐量)或数据传输的类型(串行/并行)。

(5)进一步的精确分析,编写出芯片的spec(说明书)。

有了spec,就可以进行数字芯片设计了。

下面主要介绍数字IC前端、验证、DFT和后端的设计,流程下图所示(每个公司设计流程主要是在验证和STA方面有差异,越大的公司分工越细,验证和STA操作越多):

(1)RTL设计。编写VHDL、Verilog或System Verilog硬件描述语言对寄存器之间的传输进行描述。

(2)功能仿真,编写test bench,对照spec进行电路功能进行验证。

(3)逻辑综合、DFT。逻辑综合将RTL代码生成门级电路——逻辑网表(和我们做PCB设计类似,逻辑网表相当于原理图,上面通过网络标号将各个部件连接,这里会编写约束文件{FPGA开发中的xdc文件类似}进行逻辑综合);DFT:在进行电路的前端设计时,就预先规划、设计出如何在样片中进行电路的测试方案和办法,并通过逻辑综合过程完成芯片内部专用测试结构的插入,一遍在芯片形成后能按照预先制定的方案进行相应的电路功能测试的一种设计方法。也就是进行可测性设计,就是在原有的电路中插入专门测试的电路(插入电路)。

(4)形式验证。对设计过程中不同阶段的输出结果进行逻辑功能一致性的对比,根据电路的结构,判断两个设计在逻辑功能上是否对等。下面这篇文章将形式验证讲的很清楚:

你不可不知的验证方法

(5)STA。通过EDA工具,提取电路中所以路径的延迟信息进行分析,计算出信号在路径上的延时,检查时序是否满足设定的时序约束要求。

(6)版图物理规划。通过对EDA工具进行输入标准单元库、标准I/O库、综合后的网表、各种约束文件等,规划好让EDA工具完成各模块的位置摆放、电源网络的设定、I/O信号出口位置、同时确定面积、封装、工艺、噪声、负载能力等参数。

(7)功耗分析。确定电源引脚的位置和电源线的宽度是否满足要求。对整个版图进功耗分析,即要进行动态功耗分析跟静态功耗分析,找出主要的功耗单元或者模块,以供优化。

(8)单元布局与优化。根据floor-plan中的布局规划,摆放网表中调用的所以标准单元,EDA工具自动对时序约束、布线面积、布线拥堵等综合考虑标准单元的摆放,从而依靠EDA工具完成电路的布局设计跟优化(Floor Plan主要目的是要确定design的形状大小,出Pin的位置已经所有macro的摆放)。

(9)时钟树综合(clock tree synthesis,CTS)。EDA工具按照约束,插入buffer,使时钟的源头(时钟根节点)到达各个需要时钟驱动的器件(各叶子节点,如触发器)的时间基本一致的过程。

(10)自动布线。完成模块、节点的相互连线。

(11)STA。这一次的STA比较重要,结果也是最准确的,作用与上述相同。

(12)DRC(设计规则检查)。检查连线间距,连线宽度等是否满足工艺要求。

(13)LVS(版图电路图一致性检查)。检查芯片的功能是否和设计预期一致,同时分析性能是否满足需求。

总结:

(1)可以看出整个芯片设计的流程战线拉得很长,每一部分在公司中都会有对应的职业,Verilog代码编写只占一小部分,对于ASIC设计过程中编写的Verilog根据前面的建模仿真和后端的需求来编写。

(2)在项目启动,做好spec后,此时验证、DFT、后端同时进行,设计方面开始根据spec编写Verilog;验证根据spec搭建UVM验证;DFT工程师也会搭建一系列测试框架;后端编写一系列的脚本文件。

(3)像STA,逻辑综合,前端和后端都需要掌握。

2. 做FPGA开发转数字ASIC补充学习内容

1)ASIC时序更为复杂(时序优化问题,STA或DFT):性能评估和性能优化的各种优化手段,以及针对建立时间和保持时间的计算和优化。

2)功耗:ASIC存在各种优化功耗手段(系统级、架构级、代码级、综合、布局布线、版图等),门控时钟,门控电压,DVFS等。

3)FPGA推荐同步时钟,ASIC异步时钟(全局异步、局部同步)设计(时钟树的设计);重点是多时钟域的亚稳态处理。

3. 建议参考文献:

(1)Bhasker J, Chadha R. Static timing analysis for nanometer designs: A practical approach[M]. Springer Science & Business Media, 2009.做STA分析的经典书籍(前端设计和后端设计都需要掌握,非常重要)

(2)这本书主要讲DC(Design compiler,synopsys公司的综合工具),synopsys公司一家独大!!

(3)数字VLSI芯片设计 使用cadence和synopsys cad工具,介绍如何使用Cadence和Synopsys公司的CAD工具来实际设计数字VLSI芯片。(Very Large Scale Integration,超大规模集成电路)

(4)数字IC设计:方法、技巧与实践,本书内容主要是数字芯片前端设计,不涉及模拟或是混合电路的芯片设计,而前端是指在进行物理设计(布局布线)之前的内容。

(5)数字集成电路物理设计(做数字IC后端的经典书籍)

参考书籍下载地址:

数字IC设计参考文献,共5.rar-电信文档类资源-CSDN下载三:做数字IC工程实需要具备你哪些技能前端设计(数字芯片设计工程师)

紫光展锐:

总结主要工作:

(1)读文档和写文档。两个文档分别叫Function spec和Design spec。所有工程师都需要写很多文档,依照文档去做设计。读文档主要包含很多各种各样的协议,比如USB协议,SD卡协议等,文档占了前端设计工程师很大的工作量。

(2)编写代码。主要用到的语言是Verilog,有时候也会用到C语言和C++。写出的代码叫RTL,有经验的工程师写出的代码风格都比较好,因为代码最终都要变成电路,他们更加了解每句话最终变成电路是什么样的,这是比较核心的技能。如果是做SOC的工程师,那么对CPU也需要了解。

(3)Debug。非常重要的一个环节,对于前端设计工程师来说,大约20%的时间用来写代码,80%的时间用来debug,且前端设计工程师的debug会贯穿整个流程。

(4)support。因为最初的源头代码是前端写的,所以前端往往需要从前跟到后,甚至到最后FPGA的上板测试,原型验证流程、点亮都需要进行支持。

2. 数字验证

(1)读文档和写文档。两个文档分别称:Verification spec、Test plan。

(2)编程搭建验证平台:通常是用Systemverilog/UVM,如果做SOC,则用到C或C++。验证工程师也需要学习很多脚本语言,如Perl、Makefile、python等。

(3)Debug。创建测试用例,跑仿真。

(4)support。同样验证工程师也需要提供一些技术支持。

数字前端设计工程师和数字验证工程师的核心能力:

(1)学习各种标准/文档的能力。

(2)编程能力。

(3)Debug能力。

3. DFT(做DFT没有明确的划分)

(1)EDA工具使用。将DFT技术,常见的如Scan,Mbist,Boundary Scan技术,实现到设计中。

(2)编程。产生测试向量并验证测试向量,编程其实相对较少,基本是在原来的模板上去修改,对编程技能要求没有那么高,能做基本编程即可。根据实际情况,有些公司DFT也分为DFT Design和DFT Verification两个岗位。

(3)协助后端工程师完成test模式的时序收敛。

(4)协助测试工程师进行机台测试,debug failure,提高芯片良率,后期的ATE测试,也是DFT工程师经常要做的工作。

4. 数字后端

(1)逻辑综合。把写的代码综合成网表,当然,逻辑综合后面还有一些小流程,包括形式验证。

(2)自动布局布线。将把网表转化为版图。

(3)静态时序分析(STA)。数字后端非常核心的一个环节,怎样做好STA,怎样修掉timing至关重要。

(4)物理验证:最终变成版图之后,还需要做一些物理验证,主要是做一些DR,CR,LBS。

(5)功耗分析:对功耗做预估,后续对芯片做酵母分析的时候需要用到这些值

综上,后端设计工程师要做的事情是非常多的,但每家公司对后端的要求都不同,有些大公司里,上面5个步骤,每个步骤都有专门的人做,小点的公司可能就要多做几个步骤,甚至全部都要做,有的小公司可能不会去做功耗分析。

后端设计工程师需要掌握的东西会比较多,但是不要求每一项都很精通。

核心技能要求:

(1)EDA工具使用:需要掌握Innovus/Encounter,ICC/ICC2,DC等等多种工具。

(2)脚本语言:TCL、Perl、Python等。

(3)分析报告。

(4)修错误。

以上是本人最近调研的总结,欢迎大家一起交流讨论,有问题请指正。

刚开始学习数字IC设计时,应经常完善verilog和sv语法体系!

附上新手刷题网站:

HDLBits​hdlbits.01xz.net/wiki/Main_Page

日常巩固和入职前刷题网站:

知乎 - 安全中心​www.nowcoder.com/exam/oj?tab=Verilog%E7%AF%87

比较好的入门和基础书籍推荐:

verilog入门书籍(这本书挺薄的,讲的也比较基础):

芯片验证书籍推荐:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭