芯片反向工程的意义:当代IC家当的市场竞争十分激烈,所有产品都这天月牙异,使得各IC设计公司必须不断研发新产品,坚持自身企业的竞争力。IC设计公司常常要根据市场需求进入一个全然陌生的运用和技能领域,这是一件高风险的投资行为。并且及时理解同类竞争对手芯片的本钱和技能上风成为一定的事情。如果让工程师在最短的韶光以最有效率的办法设计电路才是最难办理的问题,逆向工程看来是个中一个办理方案。逆向工程能将整颗IC从封装,制成到线路布局,利用将内部构造,尺寸,材料,制成与步骤逐一还原,并能通过电路提取将电路布局还原成电路设计。
目前,国外集成电路设计已经非常成熟,国外最新工艺已经达到10nm,而海内才正处于发展期,最新工艺达到了28nm。有关于集成电路的发展就不说了,网络上有的是资料。对付IC设计师而言,理清楚IC设计的全体流程对付IC设计是非常有帮助的。然而,网络上彷佛并没有有关于IC设计全体流程的轻微详细一点的先容,仅仅只是大要性的说分为设计、制造、测试、封装等四大紧张板块,有的资料先容又显得比较分散,只是单独讲某个细节,有的只是讲某个工具软件的利用却又并不知道该软件用于哪个流程之中,而且每个流程可能利用到的工具软件也不是太清楚(此不雅观点仅为个人经历所得出的结论,并不一定真是这样)。
芯片正向设计与反向设计。目前国际上的几个大的设计公司都因此正向设计为主,反向设计只是用于检讨别家公司是否抄袭。当然,芯片反向工程原来的目的也是为了防止芯片被抄袭的,但后来演化为小公司为了更快更省本钱的设计出芯片而采纳的一种方案。目前海内逐渐往正向设计转变的公司也越来越多,正逐渐摆脱对反向设计的依赖。当然,正处于发展初期的公司也不少,自然反向设计也是不少的。本文章从芯片反向设计开始进行总结。
“工欲善其事,必先利其器”。随着集成电路的不断发展,不管是芯片正向设计还是反向设计,它们对付工具的依赖性越来越强,因此,在要开始讲设计流程之前,先来看一看,我们到底会用到哪些紧张的工具和赞助性的软件。
一、紧张工具软件。
说到设计工具,就不能不提到三大EDA厂商——cadence,synopsys,mentor。这三家公司的软件涵盖了芯片设计流程的险些所有所能用到的工具。首先是cadence公司,这家公司最主要的IC设计工具紧张有candence IC系列,包含了IC 5141(目前最新版本是IC617),NC_VERILOG(verilog仿真),SPECTRE(仿照仿真),ENCOUNTER(自动布局布线)等等synopsys公司,最出名的是它的综合工具design complier,时序剖析工具prime time,仿照仿真工具hspice等;mentor公司最出名的工具是calibre(版图DRC LVS检讨),modelsim(verilog仿真)。
这些都是IC设计最常用的工具,无论是正向设计还是反向设计。当然,随着软件版本的更新迭代,软件的名字可能有所变更,并不是上述的那些名称。其余,这些工具紧张集中在以linux为内核的操作系统上,紧张代表有Red Hat。以是有关unix\linux类操作系统的知识还是有必要学的,该类系统与windows系统有很大的不同,要想学会利用这些软件,首先要学习这些操作系统的干系知识,详细资料网上有很多。部分工具有windows版本,例如hspice,Modelsim。
二、 赞助类工具软件。
当然,除了这三大EDA厂商的IC设计工具外,Altera 、Xilinx、Keil Software这三家公司的软件quartus ii、ISE、KEIL开拓环境等,都是对付IC设计流程中比不可少的工具。它们分别是用于FPGA、单片机&ARM芯片的开拓。这类软件在芯片的CP测试和芯片运用方案开拓上会有用到。
版图提取工具,NetEditorLite、ChipAnalyzer,这两个工具紧张是针对芯片反向设计而言的。
算法设计工具,MATLAB,此工具运用范围很广,但对付芯片设计来说,它较为适用于算法原型开拓,例如,通信算法。
PCB版图工具,Altium Designer,Orcad,Allegro。个中,目前Orcad,Allegro是属于cadence电路系统设计套件内的紧张软件,而Altium Designer是最常用的软件,它的前身是Protel。
Labview与数字源表,这一对软硬件紧张用于芯片电气参数的半自动化测试,特殊是仿照芯片。其目的是芯片设计公司用于剖析芯片样品参数用。
对付这些工具的该如何利用,我会不才面的文章中进行解释。ps:没有详细解释软件利用环境的,一样平常是在windows环境下利用。
先从反向设计提及。下面是芯片反向设计的流程图。
橙盒科技半导体研究中央芯片反向设计流程图
一、反向设计总体方案。
在进行一块新品芯片的开拓前期必须要有一个设计总体方案,个中最紧张的问题便是,这颗芯片是否能带来收益,毕竟公司要靠产品用饭。如何评估芯片能否带来收益?这须要多年的履历才能进行准确的评估。一样平常是看市场上哪几款芯片销量好,并且未来几年的销量看涨,并且评估本公司是否有能力设计并且有渠道发卖出去。要考虑的芯片本钱有以下几项:
1,芯片拍片本钱;
2,芯片从立项到交货的韶光本钱,韶光过程导致芯片纵然设计出来了,市场已经不须要了;
3,流片本钱;
4,工具软件的授权利用本钱;
5,测试本钱,包括CP测试和成品测试以及搭建测试平台所须要的其它本钱;
6,封装本钱。
将这些本钱进行适当预估之后,再来看收益。对付收益这块,这是和市场的需求和销量走向有关,须要涉及到许多其他方面的考虑。在收益问题办理了之后,明确此项目可以得到收益,那么就可以正式开工,前面说的一堆东西实在便是项目可行性剖析的一部分。但实在有些公司并不会考虑那么多,由于这些可行性剖析本身非常困难。反向哪一家的芯片?选择大公司的芯片进行反向一样平常来说成功率会更高。选定芯片后就进行拍片了,芯片进行解剖拍片一样平常周期在1严密1个月之间,这视芯片的大小而定。
二、工艺选择。
这个要依据拍片回来的芯片版图来决定,通过对芯片版图的识别,判断待反向的芯片版图利用的工艺是什么,再根据公司自己拥有的工艺文件(这些工艺文件都由海内或者国外的芯片制造厂供应,条件是公司得与它们互助才能得到工艺文件),两者进行比对,选择一个适宜的工艺进行后续的仿真、版图绘制和流片。工艺选择的问题,须要对公司所拥有的工艺非常熟习,并且对版图也要熟习的工程师来办理,他要能够通过版图明确的识别所用的工艺。当然,工艺有时候会在设计过程中反复的改换,由于会有许多参数、流片成功率等各种繁芜成分的考量。这一步实在也就叫工艺可行性剖析,实在也该当归于项目可行性剖析的一部分,但是由于必须要拍片才能进行,以是只能单独解释。
芯片工艺剖析详图
三、版图提取。
在上一步工艺可行性剖析完之后,确认有工艺可以和该版图匹配,那么就可以进行版图提取事情。这部分的事情实在紧张是识别版图中的管子并用符号表示出来。所用到工具有
A、NetEditorLite或者ChipAnalyzer,这是版图提取工具,在不同的公司进行芯片拍片,会用到不同的版图提取工具。该类软件的浸染便是一个图片查看器,拍摄的版图便是数据便是照片。
B、cadence IC5141 里的virtuoso schematic软件,这是电路图绘制软件。
全体事情的流程是用NetEditorLite或者ChipAnalyzer打开拍片的芯片版图数据,人工肉眼识别里面的管子(二极管、三极管、MOS管之类),再利用virtuoso schematic将管子用符号表示出来,并把管子之间的连接关系连接上。
版图提取所要把稳的问题:
1,初次进行版图提图,可能会不认识管子,须要有履历的人来帮助识别,熟习之后就随意马虎了;
2,不同工艺的版图管子的形状是不一样的,以是碰到不认识的管子,要么靠别人帮忙,要么就只能自己去推理;
3,要有良好的管子命名习气,这个每个公司都该当有规定的,这对付后续的事情会有很大帮助;
4,只管即便按照版图的布局来放置管子的布局(在virtuoso schematic上的电路图布局),这样可以加快往后比拟电路图和版图时找管子的速率;
5,在整理提取出的电路时一定要新建一个电路图来放置整理的电路,不要在刚提取的电路图上整理,方便整理时和版图数据比拟。
芯片解剖
四、电路整理。
在版图提取完毕之后,下一个步骤便是电路整理。提取完的电路图是混乱的,没有层次关系。那么如何将其整理成具有层次关系,让人一看就懂呢?
1、这就涉及到有关芯片的一些知识了。芯片分为数字芯片和仿照芯片,但是数字芯片必定会包含仿照电路,而仿照芯片却可以不包含数字电路。它们有如下一样平常特色:
A、数字芯片,必有时钟振荡电路、复位电路这些仿照电路。必有寄存器,而且全体数字部分最耗面积的部分每每都是寄存器。寄存器的利用量是很大的,因此,在版图上呈现的便是有大数量的图像千篇一律的电路,这种电路每每都是寄存器。
B、仿照芯片,有带隙基准电路。
2、说完了芯片版图知识,其余一个主要的有助于理解所提取的电路的工具便是待反向的芯片的数据手册!
这是最主要的,我们所有有关于芯片的信息都是从数据手册上得来的。以是一定要善用DATASHEET!
在芯片数据手册上,一样平常会对芯片的功能进行解释,对芯片如何运行进行解释,这些解释将有助于我们对付电路的整理。
比如说,芯片手册上说道用了I2C,那么电路中肯定有一大块电路是属于I2C的。一样平常来说,版图的布局都是将同属于一种功能的管子汇合中放置在一起。I2C电路的特色,从I2C协议的事理上可以知道,它就两根旗子暗记线,一根时钟,另一根数据线。数据在芯片内部一样平常是并行传输比较方便,以是,I2C电路一定会有串并转换电路,而串并转换电路一样平常是寄存器,而且一样平常是8位。根据这个推断结果,就在提取的电路中去探求8个在一起的寄存器,它们个中一组便是I2C电路的一部分,再根据芯片版图的I2C PAD位去探求,看连接到了那一组寄存器上,那么全体I2C的电路就被识别出来了。因此,
a、靠着芯片手册对芯片功能的解释,
b、加上芯片的一些知识性知识,
c、加个人的这种对电路事理的推理,就可以相对较快的将电路分层次的整理出来。逐步的理解全体芯片的事理。当然,由于芯片电路的弘大的关系,有时候电路并不是须要完备理清楚,对付不那么主要的电路可以不理会。只要担保连接关系没连接错就行。这阶段,只会用到cadence ic5141的virtuoso schematic软件。
芯片电路整理
五、 电路仿真及修正。
电路整理好了,下一步便是进行电路的仿真及修正了,根据工艺选择步骤选择的工艺来进行。先解释一下这阶段所利用的工具:
1、cadence spectre,一样平常集成在cadence ic5141里面,是仿照电路仿真工具(ps:最原始的版本是集成在IC5141内部,但功能不全,以是须要单独安装新版本,软件名为MMSIM61,随着版本的升级,它的名字也在修正),当然,数字电路也可以进行仿真,数字电路的实质还是仿照电路;
2、synopsys公司的 Hspice,与spectre一样的仿真工具,另有些差别。
3、Mentor公司的 Modelsim,紧张在windows上利用,用于verilog网表的仿真。
仿照电路仿真事情流程:在cadence中搭建好仿真环境,设置好仿真参数,选用spectre或者hspice,然后就可以进行仿真的。其余,也可以将电路导出成CDL网表,拷贝到Windows上,用Windows版本的Hspice进行仿真,这样做的优点是Windows易于操作。其余解释一下spectre和hspice的一项差异。spectre仿真的时候会保存所有电路节点的数据,这样做优点是方便查看各个节点的数据,缺陷是仿真花费的韶光太长,保存的数据文件太大,这一点在碰着大型电路的时候会很耗时(不知道最新版本改进这一点没有,鄙人没有用过最新版的spectre)。hspice仿真之前可以自己选定所要查看的节点,这样做就可以减少仿真韶光和减小数据文件的大小。
数字电路仿真事情流程:在virtuoso schematic中将整理好的电路路中数字电路部分导出成网表文件,再拷贝到windows系统上进行仿真。windows系统上数字电路网表的仿真采取Modelsim。(这么做的缘故原由是linux系统不太方便)利用Modelsim仿真,最主要的是写好testbench(貌似这句是废话)。
关于电路的修正,这部分实在不好总结,由于每一款芯片都有不同的参数,所要修正的地方都不太一样,我所知道的是,必定要考虑修正的地方每每都是有关仿照电路的,例如,时钟振荡、复位电路、开漏输出管、带隙等,修正的目的是为了与当前所选用的工艺适配,以知足芯片datasheet的参数哀求。其余,数字部分的电路实在一样平常来说是不须要修正的,但有时为了节省版图面积,会缩小寄存器管子的尺寸,毕竟缩小一个,就即是缩小了几十个。这一阶段实在是一个不断的迭代过程,它要和版图绘制结合起来,这样才能够担保芯片功能和性能的完全。
电路仿真
六、版图绘制。
这部分在电路整理完之后就可以开始进行了,并合营电路仿真与修正,逐步晚上版图的绘制。该阶段所利用的紧张工具有 1、cadence ic5141的版图绘制软件;2、cadence Dracula Diva或者Calibre,这两个用于版图DRC(设计规则检讨)、LVS(版图同等性检讨);一样平常而言,calibre会更加常用一些,毕竟这可是Mentor公司的招牌软件之一。在版图绘制好并进行各种检讨无误之后,就可以tapeout,准备流片了。
七、测试规范。
IC设计师在芯片tapeout之后就要准备制订CP测试规范了,这是接下来CP测试流程的总纲,非常主要。测试规范的测试项紧张来源于芯片datasheet,将主要的参数设置为测试项,并规定参数的合理分布范围以及每一个测试项的测试方法(流程)。这些测试参数以及测试方法将决定CP测试开拓时所用到的测试环境ATE(auto test environment)。
八、CP测试开拓。
根据测试规范,可以选定所须要的测试工具以进行全体测试环境的搭建事情。我所知道到用于芯片测试的测试仪有JUNO DTS-1000,ASL1000,V777,STS8200等。每一种测试仪适用于不同种类的芯片测试,测试仪紧张分为数字测试,仿照测试,数模稠浊测试这三大类。CP测试开拓所须要做的事情有:1,测试仪的选择(ps:这个阶段还要考虑一个主要的成分便是一次测试多少颗裸芯,也便是CP测试常说的多少个site,这关系到后续测试程序的编写,以及DUT板的制作,非常主要);2,根据测试仪开拓测试程序;3,制作测试裸芯片用DUT板,扎PAD位的针由测试厂制作并焊接在DUT上(ps:DUT板有时候也叫针卡);4,低廉甜头测试仪(可选),当测试仪并不能完成某些分外测试项的哀求时,还得自己制作测试仪。例如,红外吸收芯片测试所须要用到的扫频仪,若采取非低廉甜头扫频仪,测试韶光将非常长,必须自己制作。5,测试数据的剖析。对测试数据的剖析有助于对测试方法的改进和对芯片设计的改进。CP测试在全体芯片反向设计中霸占着重要位置,所花费的人力、物力是非常多的,还须要频繁和测试厂互换,以是CP测试显得非常繁芜。在CP测试开拓完之后,会进行COB测试,之后才进行CP测试的调试阶段,以及正式批量测试阶段。
九、COB测试。
所谓COB测试,实在便是Chip On Board(将裸芯打线在PCB板上或者将封装好的芯片焊接在PCB上,并将引脚引出),它是在CP测试进行之提高行的一项测试(也在成品测试之后进行),用于初步判断芯片的功能和性能,如果这批次随机采样的几颗芯片功能和性能都很烂就暂时不必进行CP测试了。其余,COB测试比较于CP测试具有更多的灵巧性,可以测试更多的测试项,获取有关芯片更为全面的信息。当然,COB测试也是须要开拓一套相应的测试环境的。开拓的事情根据芯片的不同,事情量会有很大的不同,例如,如果有I2C通信引脚的芯片,须要用到USB转I2C芯片,例如FT232。通过在电脑上编程,通过掌握USB转I2C芯片来掌握待测芯片。这样的话,搭建全体测试环境就会比较繁芜。如果是仿照芯片,例如电源管理类芯片,须要利用LabView编程来掌握数字源表进行自动化参数丈量。总之,COB测试也是芯片设计中一个比较主要的流程,这部分的事情内容,比较难以阐述,大略的,就用数字源表测试几项参数就行了,繁芜的都会基于软件掌握的形式进行半自动的测试。详细说来,1、开拓在PC端开拓测试的程序,例如LabView;2、设计测试芯片的电路板,并留下与PC通信的接口,常日采取单片机做主控芯片;3、搭建测试所须要的环境,比如说遮光哀求。过程阐述得很大略,但实际开拓并不随意马虎,难度视待测芯片而异。
十、成测开拓。
在CP测试完了之后,裸芯就可以送到成测厂进行划片和封装了,在这期间,IC设计师所要做的事情便是依据制订成品测试的规范并进行成品测试的开拓。这部分的事情实在和CP测试的事情是类似的,只不过,相对付CP测试而言,成品测试的测试项会少很多。许多CP测试用到的测试项,比如,烧调之类的,成品测试就不会进行了,别的步骤均与CP测试同等。
十一、可靠性测试。
当芯片封装好,并通过了成品测试之后,并不虞味着芯片的测试就结束了,还有芯片可靠性测试。在成测结束,并把样品返回设计师手中之后,设计师还需进行COB测试,并在这时预留几颗芯片不参与接下来的可靠性测试,这几颗芯片将在可靠性测试之后作为比拟之用。
芯片可靠性测试,是衡量芯片的质量和寿命的一项测试。它详细包括环境测试、EMC测试、其它测试等三大项。细分项有高温低温测试、高温高湿测试,抗静电测试等等,全部的测试项可参考IC可靠性测试项目。每一款芯片都有与其对应的可靠性测试项,并不是所有测试项目都要测。我们只要关注与该芯片适配的测试项就行。详细如何决定测试项,这须要与芯片的用场有关,每一种用场,它的测试哀求都是不一样的。可靠性测尝尝验比较大略,但是,芯片的可靠性却是由此来衡量的。可靠性测试须要的测试工具都比较昂贵,当然工具的重复利用性也是比较好的。每一个测试项都对应这一套测试设备。
十二、成品开拓。
设计出的芯片必须配置相应的利用方案,才能将芯片推广出去,客户才能够更好的利用芯片。不同用场的芯片,它的利用方案不一样,差别也是非常巨大的。像单片机、ARM、FPGA类芯片,配置的可不是大略的利用方案,而是一整套利用它的系统。电源管理芯片,须要配置一个电源管理芯片的一套运用方案,并且须要具有一定的竞争力,这才能够将芯片卖出去。以是成品开拓是芯片能否卖出去的关键。我所打仗到的成品开拓,基本因此单片机为主控芯片的开拓方案。详细开拓过程将在后续有更为详细的解释。