网络通信
返回首页

探究为什么有些项目出来结果会失败?

2018-05-02 来源:跟IC君一起学习集成电路

在做这个项目的过程中,IC君一直在反思,工作7年以来,为什么绝大部分的项目都很忙?每到tapeout的时候总是手忙脚乱?为什么有些项目出来的结果会失败?



《穷查理宝典》


巴菲特的搭档查理芒格认为凡事要反过来想:


“如果要明白人生如何得到幸福,首先是研究人生如何才能变得痛苦;要研究企业如何做强做大,首先研究企业是如何衰败的。”


要想做一个成功的项目,首先是研究如何做一个“失败”的IC项目。


这儿定义的失败,是指项目执行的过程很混乱,大家做得辛苦,但是最后出来芯片的bug却很多,甚至完全不能工作。


至于芯片生产出来之后,市场定位准不准确、好不好卖或者赚不赚钱不在我们的讨论之列。

我们IC的项目流程往往如下所示:

这个图的步骤分类比较粗犷,具体各部分的功能以前的文章也说过新入职IC工程师必备技能——数模混合篇。比较细致的流程可以参考之前的文章一个前端数字IC工程师的一天。下面就从这几个步骤探讨一下如何做一个“失败”的项目。


架构设计决定了一个芯片的功能和设计划分,是最重要的一环,它决定了我们以后的努力方向。如果努力的方向错了,做得越多,错的越多!

想把项目搞失败,这一步最容易。


比如项目执行的过程中,架构不停地变换,但是tapeout的日期没变:

  1. 本来想做高速芯片,后面突然想把功耗做到最低;

  2. 起初想做一颗很小的芯片,后面变成一颗很大的芯片,期间添加了无数的功能。tapeout前添加的功能最容易出问题哦!

  3. 某个中等模块的风险一开始没有评估充分,做到后面发现冒出来的bug越来越多。如果彻底解决需要改动很多block,最后只能修修补补;

  4. 对spec的理解发生错误,项目执行的中后期发现了这个问题,为了实现正确的spec需要改动很多电路;

  5. 没有正确评估封装的可行性,比如做到后面突然发现8SOP封装包不进去,pad位置需要大改,之前做的很多评估工作完全白做。

架构设计主要是在项目leader主导下完成,当然有些东西也不完全由leader决定,老板很多时候也会参与其中。有时候架构的变化是市场导致的,果断的改架构可能对公司而言是一个正确的决定。比如某段时间穿戴式产品的兴起,低功耗突然变成大家迫切需要的特性,对于speed不太那么care。


架构的改变对于IC工程师而言,只能接受并做出更多仿真来确保架构的改动是没问题的。不管是基于何种原因,频繁的改动架构是最容易导致项目失败的!


小模块的设计和仿真验证就是广大的IC工程师的工作内容,做好自己负责的部分。对于一个失败的项目而言,这一步的危害性相对于架构设计小很多。如果你想把项目做失败,可以通过以下方法来实现:

  1. 负责的模块经过自己评估之后,发现工作量巨大或者难度巨高,但是又希望完全通过自己的努力去完成它,默默的做了几个月而没有及时向leader highlight这些问题;

  2. 在没有搞清楚电路功能的情况下,随意修改继承项目的电路。以前的项目怎么做得这么笨啊,不行我要改改它,让它的gate数目少一点,面积更小prefect!

  3. 实现功能的时候没有想清楚各种意外case,只是简单的实现spec的功能;

  4. 时序检查的时候没有留下足够的margin,在post layout仿真的时候很容易出错;

  5. 有些模块可能要跑所有的工艺角,实际做的时候只跑了一个TT 工艺,后续芯片级验证的时候也不可能跑所有的工艺,有可能芯片的工艺稍微飘一飘就不能正常工作了。比如你做了一个RC的delay在TT工艺下是5ns,但是工艺飘一飘就到15ns了,有可能电路就fail了;

  6. 设计没有冗余,自认为将面积做到了最小。tapeout前期修改电路的时候根本没有gate让你用。这也是IC君容易犯的错误。

  7. 不遵守一些既定的设计规则。比如在电路综合的时候,不希望出现latch,必须遵守特定的RTL代码写法。

芯片仿真就是把所有模块都包含进来的仿真验证。通常整合之后,会发现很多小模块设计时没考虑的问题。这一步通常会有多位工程师参与,所以前一步的问题很多在这边能cover掉,项目想要失败似乎也没那么容易。

  1. 仿真环境和电路实际工作环境不match,不带dspf没有任何寄生效应,看起来工作的棒棒的,tapeout出来之后fail了;

  2. 行为模型编写错误,你看到的仿真行为根本和实际芯片不一致,验证结果很完美,实际结果没法看。这个危害真的挺大的;

  3. 由于芯片仿真也是由不同的人负责的,所以如果负责人没有按照既定的flow 验证一些该check的东西,遗漏了很多情况,就加大了失败的概率;

  4. 负责check的人不够资深,即使看到错误的仿真结果仍然发现不了问题;

  5. 仿真时间特别长,没有使用提高仿真速度的方法,做一次仿真需要很长时间,等你仿真结果出来黄花菜都凉了。如何避免这个问题,可以参考我们之前的文章如何减少IC设计和验证的仿真时间。

4

寄生参数仿真(layout后仿真)就是考虑实际的layout提取寄生参数后,进行的仿真。

这一步通常跟做第二步的是同一批的人,如果项目要做失败,可能是以下原因导致的:

  1. 根本就没有做寄生参数的仿真,前仿的时候电路的节点根本没有寄生的RC,仿真结果看起来特别好,但是layout有可能走了很长的金属线,有可能setup时间就违例了;

  2. 对抽取寄生参数的工具使用不当:比如使用calibre的工具去抽寄生参数,有很多option需要设置。有可能寄生结果的提取比实际layout过重或者过轻,导致仿真结果的不正确;

  3. 没有做layout检查,有些模块需要特殊的layout比如电流镜、bandgap、放大器等等;还有一些特殊的走线(特殊线宽),也需要做layout检查,以确保tapeout的版本跟你仿真的版本一致。

其它原因主要是指一些跟工厂相关的问题,以前的文章也提到过一部分聊一聊tapeout失败的事。这些问题通常都很严重,一招致命的类型:

  1. mask给你出错了,少出了一层或者拿成前一版的;

  2. 某些器件用得好好的,突然建议你不要用了;

  3. 工厂产能不够,需要换工艺或者换工厂。

  4. 和PAD直接连接的电路不考虑ESD的问题

  5. 每家公司可能都有tapeout的checklist,tapeout前没有check这些规则,很可能就会fail。

我只想知道将来我会死在什么地方,这样我就不去那儿了。


由于个人知识有限,上面列举了一些项目失败的原因,大家还可以在微信文章或者知乎文章留言,IC君会对文章进行修改和补充。


最后希望大家在项目执行过程中不要犯这些错误,轻松愉快地流片成功!

进入网络通信查看更多内容>>
相关视频
  • 微波毫米波电路分析与设计

  • 天线原理与基本参数

  • Digi-Key: Follow Me 系列(1) 直播回放及答疑记录

  • 无线感测网络

  • 微波五讲

  • 天线原理 哈工大 林澍

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 用数字电路CD4069制作的万能遥控轻触开关

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 开关电源的基本组成及工作原理

  • 用NE555制作定时器

  • 带有短路保护系统的5V直流稳压电源电路图

    相关电子头条文章