概述

工具 本实验指定 下载来源
PDK CSMC 工艺库一套(本流程中采用st02) eetop
反向提取工具 Chipsmith 百度上有
系统

①Windows系统,运行Chipsmith

②Linux系统,运行Cadence

仿真工具 Cadence ic5141 eetop

学习本流程的前提
需要能够掌握cadence环境的启动和新建原理图这两项基本操作。

反向提取的目标:一个D触发器的物理实物版图照片

流程总框图

一、提图准备
我们使用上华的csmc PDK其中的st02库(可以不按照官方说明安装PDK,直接在library manager里面导入st02即可)
1、将st02的所有元件的symbol放入一个新建的schematic(这里取名叫edif)中,如下:

放完后,点击左边的check and save(或者用快捷键shift+x)然后上图中各个器件的引脚的边框都会变黄,同时,会有警告(warning)窗口出现,因为我们只需要器件的符号图,所以对警告不予理会。
2、依次点击Design=>Creat Cellview => From Cellview后出现如下对话框:

3、不予理会,什么都别动,直接选择OK,然后出现下面的对话框:

4、还是什么都不做,直接选择OK,出现如下对话框:

保存后并关闭即可。
5、

检查上图中edif是否在右边多了一种View:symbol
如果还是只有schematic一种view,请返回到前续步骤检查是否有操作遗漏。

6、接下来依次选择Cadence启动界面中的File => Export =>EDIF200

点击Browse ,


选择刚才生成的edif文件的View:symbol,用回车键Enter确定。
然后下面取个自己喜欢的名字

我想说的是,上面的Technology File最好指定一下,如果没有,就自己制作一个,放到Cadence启动路径下,然后指定明确的自己制作的tf,否则,使用这个default.tf文件,在后期可能会有莫名其妙的问题如下填写效果最佳:

之后便可在Cadence的启动目录路径下找到chongming.out
注意,此步结束不代表就真的结束了,必须查看Cadence启动路径下的edifout.log,如果log不报错,显示类似如下:

则表示导出EDIF文件顺利。

7.回到Windows,打开Chipsmith软件(软件在网上有下载)
我们依次选择“文件=>新建工程”
然后取名为Chongming_Dff_learn

单击上、下两个“确定“即可。

8、还记得我们从Cadence里面导出的EDIF 200文件吗?
现在立刻就要用到了
依次选择“工具=>导入EDIF符号图库”

然后点击下方的箭头处

选择我们的劳动果实:chongming.out(即之前提到的EDIF文件)

单击打开。
然后选定库,再选择确定,就会出现如下提示:

操作完st02后,也要对basic库选中后,继续重复如上步骤,操作一遍(不可偷懒省略),直到出来上方的成功导入的提示为止。 
然后点击右上方的“X”,关掉整个大对话框即可。

9、单击版图编辑


 
这里解释下,实际工作中是不会出现这个的,因为会有芯片照片作为背景,此处我们由于没有芯片照片,故采用书上的版图照片来代替,以方便学习逆向流程。

10、下面以触发器为例子,进行提图练习:
好,进入chipsmith的“版图编辑”后,我们开始对下面的这个版图进行提图,

说明下:实际工作中,背景是实际的芯片照片,不会像现在这样漆黑一片的。我们的核心任务就是:依葫芦画瓢。
11、以下是METAL2、METAL1、POLY和Subtrate(衬底以及肼)的位置,务必精确记忆,层与层之间的接触孔的叫法都是行业规矩,不得肆意更改叫法,平时就要养成习惯。

12、制作符号器件(这是为了后续操作让Cadence可以识别)
首先设置好右边的控制面板(右边的许多黑色椭圆,自己如果理解不透彻的话,请先按照我说的设置),如下,可用鼠标改变控制面板的大小,方便观看。

我们选择BLACKBOX这一层来制作器件,首先回顾和复习常用操作:
Ctrl+Z放大
Shift+Z缩小
P 画长条矩形(常用来画连线)
R 用来画矩形
U 撤销上一步操作
C复制对象(可以是chipsmith里面的任何东西)
F 使视图大小适中
Ctrl+D取消选定
Ctrl+S选定对象
Shift+L根据名字搜索器件
Shift+N创建新器件
Shift+D摆放器件
关于快捷键编辑:

选择工具=>编辑=>热键设置

上图中自己设置时,是可以直接全部小写输入的。
好,下面我们开始制作MOS管,按R键,画好四个方块(因为mos有四个电极,对于其余器件也是一样,有几个电极就做几个方块)

按下R,之后一起按下Shift+N,此时

在左上方的A点鼠标左键单击一下,然后松手就会发现有边框随着鼠标的移动而变化,把鼠标移动到右下方,记住把4个小框框都圈住,(此步操作的含义是表示这四个小方框,也就是四个电极都属于整个器件。灰色的大方框代表器件的有效范围。)然后再在B处再鼠标左键单击一下,出现:

选择导入,选择要做的器件的名字:

如果我要做电阻就选rhr1k.1或者rhr2k.1,然后选择打开,这时,下图的右上方就会出现图形,图形有时候会很奇怪,比如少了电极之类的,此时要检查前面的步骤是否误操作。


然后在库单元输入与符号图名称完全一致的名字mn,注意不要偷懒粘贴复制符号图名称中的东西,最好手动输入,否则可能会导致莫名其妙的错误。然后选好左边每个小方框(也就是电极)对应的名称,这个自己想怎么选就怎么选,别重复就好,无论何种电路,引脚类型一律Bidir,最后选择确定。

不小心做得有点拉风了。。。。其实我在公司里做得是很好看的。。。

然后重复上述步骤做出pmos。
由于我们提取反相器只需要mos管,所以不再做更多的器件。

也许读者会问,既然只用两种管子,让读者当初把所有的元器件放到一个schematic里面,然后导出EDIF文件,那么麻烦干什么?既然我们提图只用两种mos,为什么不只放两种器件,然后直接导出EDIF就了事了呢?
来日方长嘛,以后读者说不定就会提取别的电路,要用到除了mos管以外的器件,第一次就把EDIF文件做大做全,以后就不需要再次导出EDIF文件了,进入chipsmith就可以果断开始提图,不需要切换到linux系统了,省时省力。

打开曾庆贵老师的《集成电路版图设计》246页图9-13

这里有人会有疑问,我为啥要照着书本画版图???

因为我们没有实际的芯片(当前其实我是有的,不方便放出来,会被起诉的)

所以下面的插图中你会看到背景都是黑色的(实际中都是芯片剖面),实际情况中,你是按照芯片剖面来放置器件和连接的,这个过程就称为"提图"。

完全手动操作,因此不适用于大规模数字集成电路。

接下来就有点马拉松了。。。。耐心画。
好了,先设置下步进距离。这个是对于使用rl+Z和Shift+Z的大、缩小倍数感到不舒适时所需要调节的。
方法如下,选择上方的“选项=>显示=>设置窗口步进距离”
然后记得设置好想用的快捷键,翻转器件之类的,这个在chipsmith的用户手册中第20页有详细记载,这里不再赘述。
提图时,由于这里我们只有一张纸,我们看不见衬底,为了方便,我们假定所有MOS的S、B短接,而在实际中,对于Power类IC在(本流程的第11步骤中有详细框图),注意,实际中要看得很仔细,是不能轻易认为S、B短接的,要仔细判定。这里是由于条件所限,所以我们才做如此假定。

二、开始提图

明确概念:多晶硅跨越有源区形成MOS管。(哪怕是寄生的,也是MOS管)
由于我们没有实际的芯片照片,只好一边看书一边提图了,大概说些提图的重点:
我们知道,MOS的器件制作中,有四个小方块,表示四个电极,当金属条或者多晶硅连到这些方块时,
即表示该电极被金属条连接。对于不同的金属条之间的连接,要用不同的接触孔,比如M2和M1的接触孔是VIA1,M1和POLY的接触孔为CONTACT,如果M2和POLY连接,那么就只能设法先和M1连接,M1再和POLY连接了,也就是说此时需要两个接触孔和多添加一个M1,才能让M2和POLY连接了。
如果M1和M1粗心交叉,即使初衷并不认为他们是短接的,软件也会认为他们短接。所以画交叉的两个金属条时要小心。
下图中,深灰色的为POLY,黑色方框的为金属条,方块为接触孔,灰色方框的为有源区。
请仔细提图,否则会导致后续整理线路时的混乱。
可以先放置器件再连线,或者先连线后放置器件,也可以一边放器件,一边连线。
提图时,器件种类的判断不要搞错。
另外,由于我们练习条件有限,提图中的管子的宽、长不做测量要求。

对着上面的图(假设这个是真实芯片版图,因为我只是写个流程,不可能真的把芯片版图照片放出来,会有法律问题),在前序步骤已经做好器件的条件下,一边对着版图(实际中是芯片的照片),一边在chipsmith中提图(在实际中,芯片照片将会代替chipsmith黑色的背景)

提完后,我们选择后边的控制板中的WORKUNIT

按R,然后对整个提图画一个大方框(必须包含所有自己的成果),即比原来多了一个很大的黄色方框

然后同时按Ctrl+D,然后同时按下Ctrl+S,进行如下操作选中黄色框:

如上操作,即可选中框图(这个操作代表选中了所有东西),然后同时按下Ctrl+E(这个需要在快捷键中提前设置好,本流程的前面有详细说明)

然后仔细填写如下:

然后在上图的E:\Chongming_Dff_learn处我们得到y.edf

三、回到Cadence

由于windows系统中得到的y.edf中包含有回车键(行末结束符)

而Linux下面的回车键的行末结束符的ASCII编码与windows下面的不同,所以导入y.edf后,在linux中打开会发现一大堆^M,需要进行清理,
所以,我们把y.edf在终端中进行转化:
dos2unix y.edf
然后把它放入Cadence ic5141的启动路径下(此步骤必做),将我们的提图成果导入Cadence,在Cadence的启动界面中,选择File=>Import=> EDIF 200
出现如下界面

填写如上,然后点击OK,如果导入失败,查看edifin.log
注意,本流程的前序步骤里也有个与EDIF文件相关的操作,请进行比较:
前面是:File=>Export=>EDIF 200
现在是:File=>Import=>EDIF 200
还记得我们在下面的填写吗?

我们在上面中写了a,那么到Cadence下的library就叫a,我们在上面写了y,那么到了Cadence中的原理图就叫y了。
然后我们复制y的东西到另外一个原理图(如下),可以看到它是零散的一堆器件。
但是其实它是有连接关系的(仔细点看可以发现下面图中每个引脚都有一条短线)

四、获取电路功能

请设置好Cadence快捷键,令大键盘的数字9高亮同名线网,0取消同名线网。
之后需要凭借我们的电路知识、高亮网络标号相同的连线(也就是前面提过的,利用大键盘上的数字0和数字9),将整理线路图为合理的形式,如下:

最后,不断对电路进行分析、仿真和参数的调整,我们可以得到:
这是一个CP上升沿有效触发的主从D触发器;
R=1时,清零;
CP下降沿时,主触发器读取数据,而从触发器进行数据锁存
至此,IC逆向工程的前端工作已经全部完成。

总结下流程:

1.一个芯片卖的很好,我想反向它,我交给第三方机构把照片(这里我们是纯黑背景)拍出来,导入ChipSmith.

2.工艺库的器件从cadence导入到Chipsmith

3.照着chipsmith背景中的照片放置器件,连接所有器件之间的连线(教程中是以D触发器为例)

4.Chipsmith的文件导入到Cadence,此时导入的文件已经包含了芯片中的所有器件和连接关系,這些連接關係都是你在上一步驟中的chipmisth連接完成的.

5.猜测和整理哪些晶体管会组成哪些模块,根据用户手册给你的信息,调试各个模块。

例如,NPN/PNP出现的地方,极有可能是带隙基准模块BandGap。

整理电路图遵循的原则:

从VDD开始整理到GND,一定是从上往下原则,而不是从左往右原则。

整理电路需要最基本的数电模电知识,如果连数模电都没学习过,基本的电路模块都不认识,是不可能整理线路图的.

消耗时间:

5000数量晶体管左右的PowerIC一般单人提图需要耗时一到两周。

实际提图中采用两到三人提取线路图,然后各自网表导出,利用Calibre的LVS功能进行SVS功能的校对。

SVS的意思就是原本是LVS的功能,把版图网表替换为电路网表,这样就能对照两个人提取线路图的差异了。

违法问题:

主要是版图不能完全按照原来的画,如果完全按照原来的画,是会有诉讼的。

但是powerIC因为没有太多市场价值,所以自己画得随意些,也不会对量产成品率有太大影响。

如果是RFIC,那尽量还是照着原来的画.

工艺辨别问题:

你最终用的是自己 的pdk,

对方使用的是自己选择的pdk.

你可以在chipsmith用软件中自带的尺子去量多晶硅的宽度是多少,

例如是0.5um,那么就是0.5um工艺.

但是即便如此,0.5um的半导体工艺多了去了,不同的工艺掺杂不同, IV曲线也就不同,需要你自己调试.

该流程适用范围

①RFIC

②模拟IC

③数模混合信号IC

0.18um以上比较适合.

该流程不适用

纯数字电路,这种一般需要HDL去电路综合,超过一万晶体管的电路不要自己瞎搞.提取出来的电路的时序极大概率是错误的.

注意事项

不要迷恋所谓的芯愿景公司去给你的数字芯片提图,花一大笔钱,提图效果不保证的.

这里的效果特指数字电路的时序.

如果你经验丰富,你会知道有些数字电路的信号就是窄脉冲,控制的非常好,

这些窄脉冲在你提取线路图以后很可能因为延时问题而消失,你查都查不出来.

(因为你用的pdk和生产该芯片所用的pdk不是一个pdk,每个器件的延时都会不一样,直接导致整个时序电路失效.)

反向一个芯片前一定要找有经验的老手做好最基本的最起码的判断再下手.

后记

完成前端工作后,需要配合工艺工程师讨论电路是否有可能在需要采用的工艺中实现,如果可能,将线路交给版图工程师,并且指导版图工程师关于版图的布局等操作,版图工程师完成版图后,需要对版图和线路图进行后端验证工作,必做的有LVS、DRC和ERC。同时根据实际需要决定是否对芯片提取PEX寄生参数、进行后版图仿真。
    上述工作完成后,版图工程师生成芯片版图的GDSII格式的数据文件,并将数据发送给晶圆代工厂进行流片,流片完成后,将所得裸片,根据线路工程师设计的打线图,交由封装厂进行封装,并将封装完成后的芯片交回原IC设计公司的测试部门进行测试,良品率较高后,卖给芯片代理商,如果良率不够,那么需要检查工艺角仿真(SS,TT,TS,ST,NN等工艺角,不同PDK的工艺角会略有区别)。而芯片代理商则把芯片卖给PCB级别的应用工程师,应用工程师利用芯片,设计合适的外围电路,再配合机械工程师设计合适的塑料外罩模具,最终做成家电、军工等产品,最终卖给老百姓、军队等。

基于ChipSmith的逆向(反向)模拟IC设计流程相关推荐

  1. 模拟ic设计工程师面试总结

    面的模拟ic设计工程师,在这里做一下回顾总结 面试是技术面试官(Technical interviewer)直接面的,首先自我介绍之后问了一些关于简历上竞赛的东西,哪些是自己亲自参与做的,就介绍一下竞 ...

  2. 模拟IC设计入门——CMOS运算放大器设计

    模拟IC设计入门 本文主要参考复旦大学何红松学长的硕士学位论文<CMOS高性能运算放大器研究与设计>,在准备开始模集课程设计前进行了通读,并将自己认为重要的点提取. 一.基本概念 1.CM ...

  3. 模拟IC设计π模型与T模型

    模拟IC设计π模型与T模型 拉扎维书讲的MOS模型为π模型,一般我们也用π模型进行公式的推导以及计算,但很多时候对于某些问题π模型推导过于复杂,反而我们用T模型进行电路特性理解公式推导会更加方便.本文 ...

  4. 什么是模拟IC设计?

    什么是模拟IC设计? 模拟IC就是处理连续性光.声音.速度.温度等自然模拟信号的IC,主要是用来对模拟信号进行采集.放大.形式变换和功率控制的. 如果按照功能给模拟器件分类,可以分成电源链(管理电池与 ...

  5. 模拟IC设计到底怎么学?给初学者一点建议

    想必大家都知道,模拟IC设计非常难学.就拿最普遍的晶体管来说,我们分析它的时候必须首先分析直流偏置,其次在分析交流输出电压.可以说,这是一项相当复杂的工作.有些朋友一直吐槽模拟IC设计真的非常难学,那 ...

  6. 数字ic设计流程以及相关工具

    这里写自定义目录标题 数字ic设计流程及相关工具 数字Asic设计流程前端到后端使用工具 综合 布局布线 后仿 数字ic设计流程及相关工具 我认为IC设计流程按照功能和应用场合不同大致可以划分为三个部 ...

  7. IC-CAD IC 设计流程及 EDA 工具

    IC 设计流程是每个 IC 从业者的必修课,虽然多数人的从业方向只是 IC 设计流程中的一部分,但是了解 IC 设计流程全貌对正确认识每个 IC 设计环节的作用是有很大帮助的. 对于一个 CAD 来说 ...

  8. 搭建属于自己的数字IC EDA环境(五):搭建FPGA自动化环境(Linux下vivado Tcl脚本自动化开发),业余IC设计流程与通路

    1.简述 一个完整的IC EDA环境也不能缺少了FPGA,FPGA原型验证是IC设计流程中重要的一环.一个芯片从设计到流片需要投入大量的人力.财力以及很长的研发周期,如果流片失败,对于公司来说是一笔很 ...

  9. 数字IC设计流程梳理

    目录 I.ASIC设计流程 一.确定项目需求 二.前端流程 三.后端流程 II.IC设计流程相关名词梳理(含各流程EDA工具梳理) III.IC设计流程整理(图片): I.ASIC设计流程 一.确定项 ...

最新文章

  1. 求求你了,配个GC日志呗,不然咋分析故障原因
  2. 5分钟带你读「大清」微积分!160多年前清朝数学家撰写文言文版高等数学
  3. jTessBoxEditor工具进行Tesseract3.02.02样本训练
  4. 接口压测初识java GC
  5. python快速整理excel_使用pandas包用python清理excel数据
  6. 论坛分页频繁更新帖子缓存_如何实现频繁更改内容的“可缓存”分页
  7. 多用户在线人数监听(基于TomCat)
  8. Panel中加入3个 按钮,按钮上分别显示打开,关闭,返回
  9. 解决virtualbox 虚拟机不能ping通win7
  10. zynq平台交叉编译器的安装
  11. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 03
  12. RPi 2B Raspbian system install
  13. 一分钟搞定网页监控,实现网站链接百度自动推送
  14. linux权限不够【操作方案】
  15. 3点画矩形的lisp_在CAD中,如何在这个矩形里面再画三个这样的矩形
  16. Centos7操作系统搭建Snipe-IT资产管理系统
  17. 学人工智能可以干什么?AI岗位有哪些?
  18. 关于司南导航全系概况模糊学习记录
  19. 李希贵:教育改革最大的阻力来自我们内心
  20. 电烙铁的焊接方法图解

热门文章

  1. svn提交时自动设置 needs-lock
  2. (急聘) 高级软件工程师(C#.Net/JS) http://job.cnblogs.com/offer/8966/
  3. Webstrom 卡顿问题
  4. mysql 压力测试知乎_MySQL性能基准测试对比:MySQL 5.7与MySQL 8.0
  5. webpack常用的三种JS压缩插件
  6. JavaScript算法与数据结构——字典详解
  7. ProE复杂曲线方程:Python Matplotlib 版本代码(L系统,吸引子和分形)
  8. Writing your first Django app--Django 第一步
  9. OpenCV中GPU模块使用
  10. 获取验证码canvas