电子说
很多人都说PostMask ECO难,那么到底难在哪里?我从多个项目的ECO经历中总结了以下几点:
一、只能改金属层,甚至少数几层金属
是的,PostMask ECO一般是芯片流片回来测试才发现bug,这时为了缩短制造时间(重新NTO的turn around时间)和降低制造成本(特别是掩膜版的制作成本),会要求尽量少改,所以做postmask限制只能改金属层,甚至只能改少数几层金属。
以5层金属的设计为例,从poly开始依次是contact、metal1(Bottom Metal层)、via1、metal2、via2、metal3、via3、metal4、via4、metal5(Top Metal层),一共11层,如果全改制造成本非常高。
如果只改metal1、via1、metal2三层,会大大降低成本,同时也可以缩短mask制造时间。
二、不能新加stdcell,加大eco难度
那怎么做到只改金属层呢?我们知道在修改bug时,RTL层面一定会修改逻辑、或增加逻辑、或删除逻辑。
为了在postmask eco时能够实现这些改动,我们需要在APR阶段预先插入一定比例的spare cell(也叫dummy cell)。因为我们无法预测bug会发生在哪个模块,所以会平均撒spare cell。
当然如果对某个设计模块信心不足,就可以在这个模块附近多撒一些。
因为我们也无法得知修改和新增的逻辑的复杂程度,所以会挑选一些“万能”spare cell,比如inv、and2、nand2、or2、nor2、xor2、nxor2、mux、dff,按一定的比例组成spare module。
因为是平均撒,所以在bug发生的位置附近不一定正好有需要的cell。
这时就要么使用距离稍远的cell,要么使用附近其它cell进行组合和变换。例如,如果附近没有and2,就看有没有nand2+inv,或者inv+or2,这种变换就需要靠经验积累了。
三、Timing会变差
一方面,因为postmask eco的sparecell不会正好附近有,总会或多或少的隔着一定距离,这会引起较长的连线,这些长连线上的延时会比较大。
另一方面,spare cell的驱动能力相对固定,没法灵活选择,所以当附近只有驱动能力较小的spare cell时,也会带来较大的延时。
如果原设计的timing,特别是setup,没有留margin,那么这些spare cell的较大的延时只能让setup timing爆掉。
修复一些bug必须要新增dff,新增的dff会映射到spare cell dff上,由于spare cell dff的位置不一定最优,这时dff的时钟和复位信号接入时钟树之后很难达到平衡,这会引起大量的hold timing违例。
因为时钟树上的buffer的延迟是ps级的,想用spare cell buffer/inverter来调整时钟树,难度也是非常大。
四、Transition、Cap违例修不干净
小驱动、长连线等问题必然带来transition和cap修不干净。对于消费电子芯片,实际应用不会工作在极端corner,所以不一定会出问题。但如果是特殊领域,比如汽车电子、军工,就留下了性能的隐患。
五、当资源不足时,只能放弃部分修复
当spare cell不足或者timing/DRC搞不定时,我们一般会尝试简化eco方案;或者删除设计中不重要的功能来释放一些资源。如果还不行,就需要对bug list排排优先级了,放弃修复部分影响不大的小bug了。
当然,如果某些关键的bug不能实现eco,就需要考虑全改版了。或者放弃这个项目。
六、postmask eco需要前后端一起努力
在进行各种讨价还价和折中的时候,需要前后端工程师一起讨论,共同确定最优的eco方案。如果涉及到某些bug无法实现eco,就需要项目经理、市场人员一起研究。所以postmask eco并不是某一设计阶段的问题,而是产品级别的问题。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !