作为一名数字IC设计工程师,虽然核心工作是设计,但其他相关工作亦很重要,亦需要了解。下面简单的给出从设计开始到流片前的多个步骤使用的工具和相关的signoff点。
阶段0:准备好相应的版本控制工具和文档存储共享工具
版本控制工具:GIT,输入为RTL代码
文档资料存储共享工具:SVN,输入为RTL的设计相关文档
工具还有其他,这里只列出了两个
阶段1:RTL设计文档编写阶段
使用的工具:基本的办公软件
输入为算法文档、算法程序、协议、需求文档等
输出为RTL设计文档,模块操作流程和约束等文档
注:一般情况下先是对算法或者协议之类的进行学习;然后根据学习的东西编写RTL的设计文档和模块的相关验证操作流程文档,如果能请组内人员一起review,则更好;然后才是RTL代码的设计。这里给出一个简单的RTL设计文档的例子,实际使用时可根据情况完善。
RTL设计文档至少需要包含如下这些部分:
1 文档标题,版本号,作者,修订历史记录(修改者信息,版本号,修订内容,修订日期—),文档目录,图目录,表目录等;
2 模块整体设计要实现的功能以及模块在整体工程中的位置结构
3 模块整体设计所采用的设计思路和实现原则
4 整体组织结构,整体的控制流、数据流和顶层IO接口设计原则和方案
5 整体验证思路和方案,包括验证的数据配置和流程图
6 各个子单元的设计思路,包括了子单元的设计框图,IO端口名称及其作用和测试波形描述
7 关键节点的位置、作用以及测试波形的描述
总体来说文档编写的原则包括:先写总体方案,然后描述详细的设计方案,两者缺一不可;要包含为了提高测试覆盖率和验证设计系统结构的方案;时序描述应逐级开展,首先完成顶层的时序设计,然后对单个模块进行描述。
阶段2:RTL代码阶段
使用的工具有:Verilog语言、文档编辑器VIM、spyglass语法检查工具
输入是来自于算法的spec文件或者相应的协议
需要达到的标准:1 符合代码的编写规范;
2 spyglass lint检查中出现的error需要为0,并确认warning没有问题;
3 完成spyglass cdc和rdc的检查和确认;
4 spyglass lint/dft报告中确认除第三方IP外无blackbox,error为0,确认warning没有问题,没有使用既带rest又带set的寄存器;
5 能实现模块的主要功能;(这一点可以放在阶段3中,不过这一步应由设计者完成)
阶段3:仿真验证阶段
使用的工具有:VCS、Verdi、SystemVerilog、UVM
输入为:RTL代码,验证操作流程文档、算法代码
需要达到的输出标准:1 功能覆盖率100%;
2 代码覆盖率(分支覆盖率、FSM——状态机的覆盖率、翻转覆盖率)100%,如果有部分覆盖率没有达到100%,需要算法和IC设计给出相应的合理说明;
3 相关的验证文档和验证结果报告文档;
阶段4:综合阶段
使用的工具为:Design Compiler
输入为:RTL代码、.db的库文件、SDC约束文件
输出标准要求:1 综合时的corner需要包含高温和低温的ss;
2 读取RTL设计文档时没有error,并确认存在的warning无影响;
3 确认link log中没有unresolved(没有解析的),没有error;
4 读取约束文件时没有error,并确认warning没有影响;
5 检查时序,确认没有uncontrained endpoint,没有timing loop;
6 查看时序报告,确认没有时序违反,尤其是setup time的时序违反,没有与memory相关的min pulse/period违反;
7 查看面积报告;
8 查看ICG coverage;
9 report_clock
阶段5:时序分析、功耗分析阶段
使用的工具为PT/PTPX
输入为:SDC、.db文件、网表(netlist)文件
输出标准:1 要对最差情况下的setup进行分析(要包含高低温);
2 要对最好情况进行hold分析(包含高低温);
3 功耗分析需要分析常温、高温、低温的情况;
阶段6:形式验证阶段
使用的工具为FM
输入为:.db文件、RTL代码、网表(netlist)
输出标准:1 确认除第三方IP外无blackbox;
2 确认无set_constant/don't verify等设置;
3 确认无unverify/abort point;
4 结果pass后,还需要确认log;
阶段7:版图阶段
使用工具为:ICC
输入为:netlist网表文件、约束文件SDC、MILKYWAY
输出标准:1 确认关键信号路径上的连线宽度及VIA数目满足要求;
2 电源接入处满足最大电流容限要求;
3 ……
阶段8:物理验证阶段
使用的工具:HERCULES/CALIBRE V2LVS
输入有:RULE DECK,GDS,网表
输出标准:……
阶段9:寄生参数提取阶段
使用的工具:STARRC
输入:……
输出:……
阶段10:时序分析\后仿真\形式验证\功耗分析阶段
使用的工具有:PT、PTPX、FM、VCS、Verdi
输入有:网表文件、SDF文件、SDC文件、波形文件、DB文件
输出标准:1 后端时序分析时要确认时序裕量要在所有工艺角>0,最小脉宽时满足要求,时序分析要确认所有warning没有问题,不允许有error;
2 功耗分析需要提供门级仿真波形,并进行timebased模式和average模式下的分析;
3 FM的要求如上所说;
4 后放怎需要覆盖最好与最差的SDF;
阶段11:IP产品检查阶段
使用工具有:library compiler
输入:
输出标准:
阶段12:FPGA原型验证阶段
使用工具:FPGA开发板
输入:将设计生成的bitfile
输出:验证相关功能
注:阶段12可以在阶段3执行到一定阶段后开始
最后,以上项目都检查通过后,才可以tapeout,即将相应的文件给到工厂进行芯片制造。
由于自己涉及的内容有限,有些阶段没有列出,有些阶段可能也不全面,如广大同行前辈之类的看到并有时间的话,欢迎补充指正。