本文首发于微信公众号<FPGA学习者>
首先做一款芯片需要有市场,有了市场的需求我们就可以设计芯片的spec(规格说明)了。先由架构工程师设计架构,确定芯片的功能,然后用算法进行模拟仿真,最后得出一个可行的芯片设计方案。有了芯片的spec,下一步就可以做RTL coding了。
架构/算法设计分析
目的:完成芯片中数字部分的高层次算法或架构的分析与建模,为硬件提供一个正确的软件功能模型,更为重要的是,通过大量的高层次仿真和调试,为RTL实现提供总体性的设计指导。数字部分越复杂,这一点越重要。
工具:MATLAB、C++、C、System C、System Verilog等。不同类型的芯片都不同的选择,如数字信号处理类芯片,偏好MATLAB。
特点:这部分工作至关重要,基本上奠定了整个芯片的性能和功耗的基础。这部分工作主要由具有通信、信号处理、计算机、软件专业背景的工程师完成,也有很多微电子专业背景的工程师参与。
目的:依据第一步的结果,完成由高层次描述到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
目的:在无延迟的理想情况在,通过大量的仿真,发现电路设计过程中的人为或者非人为引起的bug。主要指标是功能覆盖率。
工具:Modelsim、VCS、NC-Verilog、(DVE/Verdi波形查看器)
语言:C++、C、System C、System Verilog,基于UVM的方法学等。主要是System Verilog,
特点:验证工程师近年来已经成为IC设计中需求量最大的岗位。这个阶段会占用大量的时间,数以月计。
目的:将RTL代码映射为与工艺库相关的网表。
工具:DesignCompiler、RTL Compiler。DesignCompiler在市场中占有垄断性地位,几乎成为逻辑综合的标准。
特点:
a. 从芯片生产的角度来看,在该步骤之前,所有的工作都可近似看做一个虚拟性的,与现实无关。而从逻辑综合起,后续所有的工作都将与工艺的物理特性、电特性等息息相关。逻辑综合工具的功能主要是将Verilog HDL格式的文本映射为网表格式的文本,因此,它的功能等同于文本编译器。那么转换的方式有很多种,工具如何选取呢?逻辑综合过程中,整个文本格式的编译过程是在给定的人为约束条件下进行的,通过这些约束和设定的目标来指导工具完成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处理为友好易读形式)
目的:RTL代码和逻辑综合后的网表是否具有一致的功能。(尤其是在后端做ECO的时候)
工具:Formality、Conformal
输入文件:RTL 代码、netlist(逻辑综合输出)、约束
输出文件:match和verify报告。
目的:分析设计中所有的路径,确保满足内部时序单元对建立时间和保持时间的要求。
工具: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设计为参考,对比综合后的网表功能,他们是否在功能上存在等价性。
静态时序分析和形式验证出现在设计流程中前后端过程,有一些地方在前端中没有提到,应该是在后端当中比较重要,作为验证设计工作的一部分,在前端中也加入静态时序分析和形式验证可以提高设计的可靠性。
Place & Route一般由后端工程师来做,Physical Design Engineer.
后端里DRC就是要检查设计规则是否符合芯片制造商的要求,这样才能正确的生产芯片。后端完成工作后,最终会生成GDSII格式的文件,交由芯片制造商流片。
[此刻只有一个表情]
Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在 20 世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
20 世纪80年代,这个语言距今已经40年,期间的修修改改并没有出现翻天覆地的大改动,也没有被时间和市场抛弃。原因很简单,在现有工艺没有突破性创新并推广之前,对以晶体管为基础的数字电路设计描述方法并不会变。
其次,数字电路就是一个由严密的逻辑组成的巨大建筑,经验的累积非常重要。小到一个加法器能不能加,加上去会不会又timing问题,performance bug如何去修正,各种逻辑描述的优劣,对各种EDA的掌握和熟悉,如何才能写出物理实现最平衡的电路…更别说大到各种各样的算法建模前的研讨,复杂算法的RTL实现,对新的系统的预研,如此种种不一而足。恐怕不是上上培训班然后教你个XXX天学会XXX就能教给你的,不在完全匹配的岗位上磨练十年,或许连我列出的这些都学不完。
最重要的是,没人敢把较高风险的系统交给有"青春"但是没有经验的人去做,一次流片,特别是高端工艺失败的代价可以顷刻让小公司破产,驱动这个社会的是资本,资本是逐利的,但是资本也是最聪明的,他清楚应该选谁。十年之后,你大约35岁的日子,别人的“中年危机”正是你在IC这个领域成熟的时间段,可以说是风华正茂。可以在技术上继续前进,或者以经验来带领团队,可以抽身出来完成创业。
客观的说,ICer并不是严格意义上的程序员,我们是数字电路的设计者和维护者,我们的每一行语言都会转换成物理意义上真实存在的与或非门,被光刻机印刻在芯片的最深处,成为所有现代工业物品中最核心的“大脑”,为它们赋予智慧。
<摘自:B站-Rong晔>
以上就是今天要讲的内容,本文仅仅简单介绍了IC设计流程和本人对数字IC的理解。更多精彩可关注微信公众号“FPGA学习者”
笔试|面试|FPGA知识点大全系列(3)
笔试|面试|FPGA知识点大全系列(2)
笔试|面试|FPGA知识点大全系列(1)