分享一个有趣的芯片逆向练习,以及我自己的解法

自以前就对芯片的逆向非常感兴趣,最早是看Ken Shirriff在他的博客righto.com发的文章入的坑,学了一点芯片逆向的知识,算是从课本往实际实现靠近了一点,后来经常在zeptobars.com看晶圆照片洗眼。但是即便如此,我的知识只能是纸上谈兵,实际的电路分析还是从来没做过,今天逛Siliconpr0n.org时看到他给出了一个小练习题,我才算是第一次尝试做逆向。

将每个晶体管的结构对应到实际的照片上完全不是一个直观的过程,尤其是在完全不知道管脚排布和功能的前提下。在做完后和Siliconpr0n的页面上提供的解答对比了一下,大体上是正确的,我将我探索的过程po在了后面,希望能给出一些参考。

QUIZ (src)

(点击看大图)

原题如此,文件名:“Metal Gate_CMOS”,作者还补充道:“关于文件名里的Metal Gate,我应该是误解了,但它确实是个CMOS”(换句话说这不是Metal Gate)除此之外无附加信息

=== 点开就剧透 ===

首先,我们知道这是一个非常简单的芯片,多电源的可能性不大,因此先假设这个芯片只有两个电源轨(VDD和VSS),那么先从电源轨入手就会容易很多。

图中每一层是什么东西一上来是不知道的,但首先可以判断的是那些阴影特别重的方块区域显然是有源区。看似是在上面,实际上有源区是埋在最下面的。

全芯片的有源区

那么,横在有源区中间的橙色条状物就一定是栅极的材料,至于这个材料是不是金属已经无所谓了(根据Pad的设计,更可能是多晶硅),我们只需要知道:1.这是栅极材料,2.这是导线,就足够完成这个逆向。

ESD

之后我们注意到芯片中大部分引脚附近的一个十分显眼的结构,如果仔细阅读过任何CMOS芯片(比如单片机)的datasheet,一定不会错过其中的“引脚结构”部分,这里一定会有两个二极管接在每一个引脚上,它的功能就是防止静电损坏芯片,让静电可以通过电源轨释放而避免击穿某个栅极。

一个典型的ESD保护电路,来自STM32F1系列手册

那么,我们顺着ESD俩二极管所接的基本可以确定是电源轨了,顺着两条路径走,最终可以找到两个引脚。因为我们还无法判断这些MOS管到底是PMOS还是NMOS,也无法判断这两个电源轨谁是VDD谁是VSS。

两个电源轨

如果一上来就推断周围环绕芯片的这一圈一定是VSS那有些过于武断,实际上似乎大部分芯片里都是用正电源轨环绕芯片一圈,我暂且还不知道这么做的原因是什么。实际上在这个例子中我们很难判断究竟谁是VSS谁是VDD,因为不知道这个芯片的衬底或有源区使用的是什么材料。有一个方法是根据PMOS和NMOS的比例来判断,但这个放到后面说也无妨,我们暂且假设上图黄色是VDD,蓝色是VSS。

我一开始在这里做了个错误的假设,就是这个CMOS工艺是我们经常在课本上见到的那一种:衬底是一个材料(比如p-),然后如果要PMOS就掺一个n+有源区出来,因此NMOS和PMOS单看几何外形就很容易区分出来。但这个芯片因为用了比较老的工艺,每个有源区是p型还是n型完全无法判断,只能是硬着头皮上了。

这块儿是个三输入NAND,注意右边那个三条栅极的东西可以看出来是个三栅极晶体管。至于是这里每个有源区是上拉网络还是下拉网络就只能猜了。在这三个NAND到输出引脚之间还有一个反相器(图中没画出),因此构成了一个三输入AND电路

同样的,把剩下的部分也按同样手法分析。这里为了清晰我就在不在图上描了,直接在digital里画出来会比较清楚

哦,上图中一眼没看出那个反相器,其实J应该是Q3

总而言之,这个芯片的功能八成就是一个三组三输入AND门。实际上原po最后揭晓的答案就是HEF4073BT,一个比较有年头的芯片。

在最后还想补充一点,看了一下源po的解答,发现他从一开始就非常确定引脚顺序和功能了,理由是:这很有可能是一个CD或74C系列的芯片,因此绑定线的位置比较固定,而且我们注意到有一个邦定pad的形状和其他的不一样,这就是一脚。他通过这些分析,很快就确定了电源轨的正确配置。这一点不知道有多大的参考价值,不过确实大部分时候芯片的邦定线是顺序排列,要是真能找出一脚,那帮助会很大。

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.