上节学习了插mbist的时的脚本逻辑,这节进一步学习脚本在插mbist的时候都对电路做了哪些改动,包括定义了哪些端口,添加了哪些模块,都是什么功能。以下描述都是基于现在参考的一个设计环境,不方便贴出,有些步骤不是普适的。
在上图mbist_insertion_flow中,红框内的部分是插mbist的主要工作,根据之前的学习,三部分的工作内容如下:
dc.mbist.pre: 定义dft中用到的一些端口;为了避免之后可能会出现的DRC violation,在开始插Mbist之前将memory原本的function clock打断,通过mux连接上我们做Mbist的clock;对一些pin设置safevalue。
ts.mbist: 插Mbist。
dc.mbist.eco: 完善dc.mbist.pre中的clk连接。
下面介绍它们对电路做了哪些工作。
dc.mbist.pre
pre阶段是在dc中完成的。design loading就是给工具吃库文件和设计文件(netlist,sdc,def等等);generate instances list就是抓取设计中都有哪些instances,方便之后插相应的电路。后面五步是pre中实际的job,完成后写