EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
EDA365原创 作者:毛忠宇老师
9 S. A4 h% _! R- [2 g* N" {5 I
) q7 a. ~5 C$ t" p. x. {8 n
) w. f) L% e( C U( ^7 v
& }! j% X# E+ `) Q% g _( S9 t$ M7 ?9 j: Q' ]. U' z3 x9 z
一、我所接触到的“逆向”: ~7 G7 Z k5 |; [, K
' D3 u- F F" }) H
$ G4 c- t+ ]& f# `3 E“逆向”这个词大到军工,小到淘宝特殊服务相信大家都常有所闻,对于这种现象用“笑而不语”来表达自己的认识就最适合不过了。我所经历的“逆向“工程”还得从芯片开始,毕业那年进了珠海一家台资芯片公司(在amao_eda365公众号上有关于这里的故事),现在看来原公司虽然只做低档消费类(主要为:电子表、音乐类芯片、时钟类)的电子芯片,但是“麻雀虽小,五脏俱全”,自身就具有从“拉单晶、产品设计、验证、芯片造制、芯片测试、封装、芯片自行销售”等完整的产业链,而那时的工作除了正向设计,还会逆向下另一家台资“友商”的音乐类IC。当时由于芯片的门规模较小,金属层数也少,做下逆向还是可以的,现在芯片集成度太高、层数多,逆向的方法已行不通了(除了某些器件级芯片还可以外)。 下图说明怎样由IC实物逆向出一个反相器的过程: , O" w+ F& P) h% h4 T1 j# C1 ^$ h
(1)为待“逆向”的芯片实物 (2)为局部放大的反相器芯片实物部分 (3)是对应的IC layout的版图 (4)是由(2)描出来的MOS管连接方式 (5)是在工程中使用的反相器表示方式 如规模太大、金属层太多的芯片, 这类通过逐个描出晶体管的“逆向”方法已行不通(其它方面的设计思路倒可以通过剖片参考),写逻辑自己正向设计才是正解。 下面要探讨的由PCB“逆向”出原理图的方法与上述有一点点类似。 1.2 由PCB文件“逆向”到的原理图“从当初的芯片逆向到现在变成了PCB逆向原理图,总觉得有点丢人!!!”。2 C. O- Y3 }2 M( B8 [
PCB与原理图间相互调用的正常套路 正常的PCB与原理图间的设计关系是:先有原理图,再由原理图网表导入,创建出PCB文件,通过第一方网表导入后,很多PCB设计工具提供了PCB与原理图之间的反标的功能以对应各种修改。
% h; g3 Q4 q, V! k
奇葩需求
5 K; }, |0 f/ y' ^5 S* i而现在的情况有点不同:手上拿到一个PCB文件,要求保证PCB的上的元件序号及连接关系方式不能变动,而新建一个与之对应的原理图,这个时候怎么把原理图快速画出来呢? 目前为止我没有找到哪个EDA软件能提供这样的由PCB文件逆向生成原理图的功能。项目的具体布局布线如下图所示,PCB不算复杂且有很多相似模块,于是与合作写SI书的作者李工再度合作,各施所长后轻松搞定,当然有好的原创技巧与心得总是忍不自与大家分享了。 对于这类从PCB文件“逆向”出原理图的方法主要分为如下的几个步骤: Step1:根据PCB的元件创建原理图Symbol Step2:根据PCB中元件间的连接情况,在ORCAD中把对应Symbol各管脚的连接起来 Step3:根据PCB元件上的标号逐个修改原理图上对应的原元件标号(对于成百成千个分立元件(如电容等)要一一对应进行修改的情形往往会在无意间把火气发到同事的身上) Step4:导入新创建的原理图网表看PCB连线及元件数量是否变化以最终确认。
% B( w5 _) i* k6 K' Y
【Step1】对于PCB上的复杂大器件如BGA类器件建库可以使用excel进行轻松建ORCAD Symbol。具体方法除了本文章提供的附件中有详细说明外,也可以参考《华为研发14载,那些一直奋斗过的互连岁月》一书的第7章146页中的详细描述)。 【Step2】最为传统(笨)的方法就是根据每个元件每个管脚的连线逐根线画出来,如PCB连接关非常复杂情况下,除非对象很有价值或工作任务的需要,否则这类复杂令人发指的工作没多少人愿意做。由于这个项目连接数不多且为总线及模块化多,使用最为传统的方法已足够。# i' ]! Y P9 I3 ], K
【而对于非常复杂的原理图可以参考下面的思路:在第一步生成的原理图SYMBOL时使用PCB网络连接的网络名,而在ORCAD中连接元件间的连线时,只需要写个脚本把从ORCAD SYMBOL中拉出的一截连接线中自动加上PIN中包含的网络名即可(ORCAD中连接线起相同的网络名就表示它们是连接在一起),对此类元件可以整排拉出连接线后再自动给连线自动赋网络名的方式非常高效)】。
! l9 v; f- M( X6 n& N
【Step3】把原理图上元件的标号(Reference)与PCB上对应的标号一一对应进行修改,对于较大的IC芯片,数量较少所花时间可以忍受,而成百上千的如电容等分立元件要把PCB与原理图的序号一个个要对应起来,免不了要在2个软件间来回操作这个过程相当费时费力。针对这个情况,作者专门开发了个小程序进行处理可以使效果大大提高, 开发的辅助小工具. J3 v% v6 O5 Q0 r
通过使用这个小程序,一般的项目可以在很短时间内愉悦地完成元件Referece的对应修改。特别是对于可以重用的模块把PCB中根据元件标号传到原理图中的相应模块更为方便,方法文件中提供下载的附件中有描述。(**这与PCB与原理图在已调入网表后反标不一样,因为现在的项目中只有PCB没有原理图没法进行反标)。 模块上元件的reference转到原理图中对应的位置/ V+ v7 n/ ^% \( S' O: h
3 p# t h: N7 w N6 `8 J
【Step4】原理图“逆向”完后,可以通过网表导入到PCB,看PCB的元件的数量及连接关系是否有变化以确认过程是否有错误。如果需要在此基础上对产品进行“修改及优化”,后面使用传统的方法进行修改及反标即可。
8 [' A2 X) p/ Q4 t) L& F* z1 O
出品|EDA365 作者|毛忠宇老师
* }/ V" ~ s4 X8 j* [
2 [$ D6 v6 @, F9 g/ t
1 p" Z1 b! x' F' b: Q8 j) L5 o' P% s
注:本文为EDA365电子论坛原创文章,未经允许,不得转载
* c* ^! }/ F6 y+ {! v/ A
6 c9 y7 @' {+ K# v" ]! ^3 _
7 @1 \- B9 h/ x: ? |