强行逆向HP35 ARC芯片版图的尝试 - 全过程记录

9年前,Peter Monta拍摄了一台HP35中ROM和ARC这两个芯片的版图,并通过直接记录版图上的图形的方法人工读出了HP35的ROM内容,这为模拟器社区提供了重要的素材。这些芯片的高清照片被发表在pmonta.com上。自一年前看到它我就非常想尝试逆向它,但是因为当时的知识水平限制没能做到。今天在积累了一定相关知识后我进行了尝试,最后的结果基本还是正确的,不过现在只能在这里记录我的方法,至于实际将这个芯片逆向成网表这种工作因为时间关系暂时没法做,希望未来什么时候能闲到把它逆向完…

图1. ARC照片的缩略图,原图见pmonta.com,有6919 x 8327

在70年代早期,因为钠离子沾染问题,NMOS很难制造出来,于是当时的数字芯片普遍是PMOS工艺。再加上这个计算器使用的是负逻辑,很容易判断这一定是一个PMOS芯片。

可惜我对PMOS工艺的了解完全是0,资料也几乎没法找到。在刚刚决定开始做逆向时我做的非常痛苦,因为相比于前一个结构非常清晰的CMOS,这个PMOS芯片没有任何标识:掺杂区、过孔、多晶硅长的完全一样,这几乎让我放弃了逆向,但考虑到pmonta.com上,站长已经发了他对ROM的逻辑部分的逆向结果,我觉得自己只要“Try Hard Enough”,总是能看明白的。在尝试了超过8个小时后我终于完全明白了这个芯片的工艺,我将我的探索过程发在这里。

图2. ARC的引脚图

首先需要声明的是,我对这个芯片的功能已经十分熟悉了:ARC是一个使用双相时钟数字电路构造的纯串行的数学运算单元,为了实现TTL兼容输出等原因有三个电源供电:Vss,Gnd和Vgg。d[4:0]是它接到LED那部分的输出。对引脚分布和功能的熟悉对于逆向过程的帮助相当之大。

图3. 其中一个输入引脚附近

在刚开始时我感到完全的手足无措:根据一些基础的CMOS逆向知识可以推测上图是一个带有二极管保护的输入端邦定线。但是我完全无法确定哪一个是掺杂区,哪个是多晶硅制造的栅极,哪个是通孔,只能看出最亮的金色部分是金属层(好在这个芯片只有这么几层,比起两个金属层的芯片还是简单一些。)

图4. 在金属层上标记出输出数据线

第一步是做了一个非常重要的观察:这里有五个带有一大堆输出晶体管(此时我还不知道应当如何具体分析这个结构,只能看出功能)的输出邦定线,顺着导线往回走,可以看到这五个输出端来自同一个部位,因此几乎可以肯定这五个就一定是d[4:0]。

一般而言邦定线的顺序和引脚顺序是一致的,因此我们就可以标记出所有的引脚。

图5. 在金属层标记整个芯片的电源和时钟网

知道了引脚之后,首先关注电源和时钟,把遍布整个芯片的时钟网和电源网标记出来。(右上角的DRAM区比较重复,这里就没标记了)知道电源和时钟后,后续的分析会简单非常多。在这张图里根据时钟网的布置也可以大致看出这个芯片中数量相对较少的,基于Latch的时序逻辑以及数量较多的组合逻辑是怎样分布的。

接下来仍然需要知道PMOS的知识才能继续进行分析,好在Google上可以找到不少关于intel 4004的分析文章。intel 4004也是一个典型的PMOS芯片,但因为1970年代初期还没有什么成文的设计规范,每家公司的设计风格都非常不同,我读了很多文章后,有以下几个重要的观察:

  • 多晶硅只会被用作栅极,不会横跨很大面积
  • 通孔比较小,是方形或长条
  • 除了金属外所有的导线都是用有源区做的
  • 栅极跨在两个有源区之间(PMOS结构)

在知道这些知识后,我仔细看了一个输入端所接的一个Latch,根据以上四个原则很快可以判断出每个部分应该属于哪一层

图6ab. 感兴趣的部分,原图+打了标记后

图中蓝色是掺杂区,接近黑色的部分是通孔,黄绿色是栅极多晶硅,其他颜色的全部是金属层(包括多晶硅上的白色区域)。

信号从右侧的掺杂区导线进来,经过中间的Latch后从左上角出去。PMOS的结构对于学过电子的同学们来说应该比较熟悉:

图7. 一个P-MOSFET构造的二极管

比如说,在图6b中,下面的三个长条状物就是图7所示的PMOS二极管。

图8ab. 将图6所示的电路提取出后进行仿真,点击放大

我在LTspice中搭建出了图6所示的电路,这些器件的参数都是随便挑的,虽然不准确但应当某种程度上还是能工作起来。在图6所示电路以外我还加了个PMOS反相器(M9和M10),模拟这个电路的负载。根据仿真结果可以看出其行为正式我所期待的Latch。

因此暂且就认为目的已经达到了!只要顺着这样做下去就能完成逆向,而且现在也有不少像Degate这样的开源软件可以自动进行结构分析,只需要用户自己先把电路完成矢量化(简单来说就是描出来并标记)就可以了。我想有时间的话我会试试这些工具。

最后我一定要吐槽一句:HP/Ami以前的工程师真的是人类吗!?这个芯片设计的精巧程度简直难以置信,在以今天眼光看来异常严苛的条件下(只能用一个金属布线层,管与管之间没法做隔离,等等)居然能够把一个芯片布置的如此紧凑,实在是难以想象这是怎么做到的。

参考文献:

[1]. Peter Monta, HP-35 chips, pmonta.com

[2]. John Mcmaster, Understanding the Intel 4004

[3]. The Layman's Guide to IC Reverse Engineering, Siliconzoo.org

[4]. cr1901, NMOS IC Reverse Engineering, WDJ

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.