对IC Flow的反思
对IC Flow的反思
博士期间已经经历过三次流片了,由于基本上没人带着走过流片的flow,很多事情自己第一次上手时主打一个误打误撞。所以每次流片结束之后,做复盘与反思就显得尤为重要。
这里还是对一些重要的个人认为的原则做一下记录,姑且当作checklist。
设计阶段
- 必须明确了设计目标,功能模块以及相互之间的接口后再开始设计。
- 必须拿到不熟悉工艺的PDK,先检查文件是否齐全。
- 必须每个主要模块都要有尽可能详细的文档。
- 必须尽可能完整的归档和保留工程文件。
- 应当通过git进行项目的版本管理。
- 应当尽可能的使用可靠的开源IP(如Github,OpenCores等网站),以减少造轮子的工作量。
- 应当尽可能的使用成熟且稳定的电路结构,除了工作的主要创新点。
- 绝对要坚毅而狠心的进度管理,在目标上合理做减法,当断不断必受其乱。
验证阶段
- 必须提前做好验证规划,确保覆盖到每一条设计功能都有对应的验证条目。
- 必须对每一个验证条目有尽可能详细的文档记录。
- 必须尽可能完整地将验证所用文件工程与设计工程一并进行保留和归档。
- 应当采用UVM设计方法学进行验证。
- 应当对重要功能电路做多工艺角和蒙特卡洛仿真。
- 应当对有软硬件协同需求的项目提前搭建参考模型,例如采用SystemC。
- 应当采用多方位的验证手段,包括前仿真,后仿真,一致性检验,数模混合仿真,FPGA上板验证等。
- 绝对要将验证成功作为进度的里程碑,未经过完整验证前设计不要往前乱推。
流片阶段
- 必须对全片做完整的DRC,LVS,ANT检查并确保Clean,并保留和归档report。
- 必须准确的Layer by Layer的核对Foundry的流片检查表格,确保没有用错/用多/用少Layer。
- 必须谨慎的进行JDV检查,避免出现错层/错位等重大问题。
- 必须提前和Foundry了解需要使用的DRC规则版本,并核对确保option不出错。
- 应当给芯片添加LOGO,以方便bonding时确定正方向。
- 应当提前预留Foundry做Dry Run的时间。
- 应当对流片提交过程中的所有GDS文件进行checksum检查,避免传输过程中的损坏/出错。
- 绝对要在流片这一步慎之又慎,任何检查上的疏漏,都有可能使得大笔的钱以及团队之前数月的努力付之东流。
测试阶段
- 必须仔细核对bonding板与芯片引脚的对应关系,并确保丝印的正确性。
- 必须提前做好测试规划,包括要测试的功能,测试方案,预期激励,预期响应,实际激励,实际响应等。
- 必须要撰写尽可能详细的测试记录。
- 必须要尽可能完整地将测试工程和设计/验证工程一并归档和保留。
- 应当提前在验证阶段时以VCD波形的形式保留关键的激励-响应对,并在测试阶段时准确核对。
- 应当有效的利用验证阶段时的参考模型与FPGA上板验证工程,提前进行测试工作的准备。
- 应当在设计阶段时就对测试做出规划,并预留好重要的调试接口,如JTAG等。
- 绝对要将测试时可能会碰到的情况预先考虑结合到设计和验证阶段,包括好不好提供输入检测输出,如果某个功能模块挂了其他功能模块如何测试等。
本人只是个纯IC萌新,仅仅是将自己目前所经历过的问题,踩过的坑做了简单的反思和总结。在IC做的越久越感觉学海无涯,只有不断积累不断进步才是唯一的正途。