后端设计中的特殊cell大盘点

后端设计中有几种常见的特殊cell类型,它们基本上都是physical only cell,但是各自的特点却又不同,而且不同的工具设置和插入他们的方式也不尽相同。‍

Well Tap Cells

我们在学习CMOS电路的时候都知道闩锁效应(latch-up),这种效应可以在短时间内烧毁CMOS器件。
为了阻止这种现象的发生,后端设计通常会在std cell存在的区域加入well tap cell。一般来说工艺规则会要求在well tap cell的密度不低于某一特定数值,而后端的做法一般都是按照固定的间距插入多列tap cells。

插入tap的方式可以分别在ICC2或者Innovus中使用如下命令:
icc2_shell> create_tap_cells -lib_cell $tapcell_ref -pattern stagger -distance $distance -skip_fixed_cellsinnovus> addWellTap -cell $tapcell_ref -cellInterval $distance -checkerBoard -incremental $cells_list -prefix WELLTAP
Boundary Cells (EndCap)

Boundary cell又称end cap cell,在绝大多数工艺中都要求在所有std cell 的边界都需要插入它们。
Boundary cell一方面可以保持阱和注入层的连续性,同时也可以在刻蚀和离子注入的时候对row边缘的std cell起到一定的保护作用。

在ICC2和Innovus中可以分别采用以下命令插入boundary cell:

icc2_shell> set_boundary_cell_rules -left_boundary_cell $endcap_left
-right_boundary_cell $endcap_right
-top_boundary_cell $endcap_top
-bottom_boundary_cell $endcap_bottom
icc2_shell> compile_boundary_cells

innovus> setEndCapMode -topEdge $endcap_top
innovus> setEndCapMode -bottomEdge $endcap_bottom
innovus> setEndCapMode -rightTopEdge $endcap_right_top
innovus> setEndCapMode -rightBottomEdge $endcap_right_bottom
innovus> setEndCapMode -rightTopCorner $endcap_top_corner
innovus> setEndCapMode -rightBottomCorner $endcap_bottom_corner
innovus> setEndCapMode -rightEdge $endcap_right
innovus> addEndCap -prefix EndCap

Tie Cells

在芯片设计中通常会有不少信号需要给定固定的输入如固定高电位或者固定低电位,同时很多无明确输入的open信号也最好固定在某个点位,这时就需要连接到tie cell。
tie cell分为tie high和tie low两种,前者将信号固定在高电位,后者将信号固定在低电位。

在后端工具中只要通过命令设定tie cell的种类工具就可以在各个阶段的优化命令中自动插入tie cell,同时还可以控制tie cell的fanout:

icc2_shell> set_lib_cell_purpose -include optimization [get_object_name [get_lib_cells */$tie_ref ]]
innovus> setTieHiLoMode -cell $tie_ref

Antenna Cells

天线效应是集成电路制造过程中经常发生的现象,原因在于连接在栅极的金属会不断收集电荷,在某个临界节点将会放电到栅极引起晶体管损坏。
解决的办法之一就是插入antenna cell来增大栅极的面积,也就是提高承受放电电流的能力。
在后端设计中,通常在绕线阶段让工具在发现有antenna violation的时候自动插入antenna cell。

icc2_shell> set_app_options -name route.detail.antenna -value true
icc2_shell> set_app_options -name route.detail.diode_libcell_names -value $antenna_ref
innovus> setNanoRouteMode -routeAntennaCellName $antenna_ref
innovus> setNanoRouteMode -routeInsertAntennaDiode true

Filler Cells

Filler cells主要是用来填补std cell之间的空隙以保证阱的连续性,同时也可以对周围的std cell有一定的保护作用。
在集成电路制造过程中,无论是注入还是刻蚀,贴近空旷的区域的一边都倾向于受到更多的刻蚀或者注入,这样无疑会增大cell的variation,进而对时序的准确性产生负面影响。

icc2_shell> create_stdcell_filler -lib_cell $fillers_ref -continue_on_error
innovus> setFillerMode -core $filler_ref -corePrefix FILLER
innovus> addFiller

DECAP Cells

要理解DECAP的作用就要先了解数字芯片中的Dynamic IR-Drop现象。
在高频电路的时钟或者数据信号大规模同时翻转时,巨大的充放电电流可能会导致电源电压的下降,从而显著影响某些区域的std cell的供电,进而影响cell的速度。

要解决这个问题,最常见的方法之一就是增加电源的电容值,而这主要是通过加入DECAP cell来完成。
在电源电压正常的时候,DECAP可以充电来存储能量,当电源电压较低的时候就可以放电来起到一定的缓冲作用。

icc2_shell> create_stdcell_filler -lib_cell $decap_ref -continue_on_error
innovus> setFillerMode -core $decap_ref -corePrefix FILLER_DECAP
innovus> addFiller

GA-Filler/ECO DECAP Cells

ECO DECAP是一种特殊的DECAP cell,平时可以作为DECAP来提供电容,当需要ECO的时候可以通过简单的改变它上面的金属层连接来转换成具有逻辑功能的std cell,在postmask ECO阶段尤其重要。

GA-Filler全称为gate array filler,它和ECO DECAP类似,也可以通过类似的手段转换成逻辑单元。二者在后端工具的插入方式都和filler cell以及一般的DECAP cell相同。

icc2_shell> create_stdcell_filler -lib_cell $eco_decap_ref -continue_on_error
innovus> setFillerMode -core $eco_decap_ref -corePrefix FILLER_DECAP_ECO
innovus> addFiller

Spare Cell

上面我们讲了两种可以用于ECO的cell类型,还有另外一种就是spare cell。尽管GA filler和ECO DECAP可以实现绝大部分cell的功能。
但是有的时候仍然希望在设计中预留更多的冗余cell来提高芯片流片后的改版能力,从而进一步降低风险,而spare cell正是基于这样的目的而存在的。

在后端设计的早期,可以在整个设计中均匀地撒上一定数量的常用std cell如:BUF/NOR/NAD/DFF等,这些cell可以才需要的时候直接拿来做ECO,尤其是某些特殊类型的cell最好用spare cell的形式提前放在设计中。

但是插入spare cell也有一些负面影响,主要原因在于它们会占用std cell的放置区域,可能会引起整体的优化结果质量下降。

一般来说工具都有专门的命令来插入spare cell:

icc2_shell> add_spare_cells -num_cells $num_cells -cell_name $prefix -repetitive_window $window

num_cells = {DFFNSRX2T1T10 1 INVX4T1T10 2 NOR2X2T1T10 2}

innovus> addSpareInstance -file spare_cells.txt -tie 0 -clock $clock_name

spare_cells.txt

DFFNSRX2T1T10 1
INVX4T1T10 2
NOR2X2T1T10 2

MIMCAP Cells

最后介绍一下MIMCAP,其中MIM指的是Metal-Insulator-Metal,这是一种特殊类型的用来提供电容的cell,区别于DECAP的主要特点是电容量较大,大小也比一般的std cell要大很多,而且使用的金属层一般比较高,可以重叠放在绝大部分类型的cell上而不产生DRC。

在工具中可以通过直接create cell的方法来插入MIMCAP:
icc2_shell> create_cell $mimcap_name $mimcap_ref
innovus> addInst -cell $mimcap_ref -physical -inst $mimcap_name

以上就是后端设计中常见的特殊cell类型,它们的作用和用法你都get到了吗?

移知是中国半导体线上讲座和技术交流平台;这里汇聚了众多优秀和资深的大咖,通过提供最接地气的实战课程,分享最实用的经验,为您职场学习和成长助力;关注移知公众号,还可领取100元新人红包和免费半导体课程!

后端设计中的特殊cell大盘点相关推荐

  1. 在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC各代表什么意思?前端和中端流程中,SVF,SAIF又代表什么意思?

    后端名词术语:在后端设计中,GDSLL,LEF,DEF,SDF,SPEF,SDC各代表什么意思?前端和中端流程中,SVF,SAIF又代表什么意思? 1.GDSII:描述版图层次,形状,位置,几何图形, ...

  2. 交互设计中的尼尔森十大可用性原则

    交互设计领域有丰富的理论沉淀,最著名和经典的理论当属人机交互大师雅各布·尼尔森 (Jakob Nielsen)博士在1995提出的尼尔森十大可用性原则( Jakob Nielsen's Ten Usa ...

  3. 数字化时代-12:商品交换过程中的销售模式大盘点

    关键词:商品交换 销售 直营 直销 代理 经销 分销 商人在整个再生产过程中,并没有创造价值,但他们却能够赚很多钱,为什么呢? 本文主要探讨商人这个角色,并对他们在交换环节的获利方式进行一次大盘点. ...

  4. Ui设计中常用的6大工具

    在ui设计中,我们会用到各种各样的设计工具,今天和大家分享的就是常见的几款工具,一起来看看吧. 1.Sketch及插件-矢量绘图软件 Sketch想必大家并不陌生了,另外两款被大家所熟知的矢量绘图软件 ...

  5. 代码整理工具_Ui设计中常用的6大工具

    在ui设计中,我们会用到各种各样的设计工具,今天和大家分享的就是常见的几款工具,一起来看看吧. 1.Sketch及插件-矢量绘图软件 Sketch想必大家并不陌生了,另外两款被大家所熟知的矢量绘图软件 ...

  6. react滑动切换tab动画效果_后端设计中,如何用axure实现table切换动效?

    前段时间做了一个微信小程序的寄卖项目,前端页面这里不过多总结,今天先来说说后端里涉及到的内容.在做项目评审时候,不想局限于静态页面,所以会加些点击效果让产品demo看起来更加有实操性,先看一下Tabl ...

  7. 你不可错过的光模块中的激光器类型大盘点!

    " laser " 由LASER (Light Amplification by Stimulated Emission of Radiation) 受激辐射光放大器缩写演变而来, ...

  8. IC Compiler II(ICC II)后端设计流程——超详细

    Preface 本文中英文结合(学习一些专有名词),主要介绍ICC II软件进行后端设计的主要流程,在阅读之前需要对数字IC设计流程有一定的了解. 逻辑综合相关知识请查看:Synopsys逻辑综合及D ...

  9. 秒杀数字后端实现中clock gating使能端setup violation问题

    秒杀数字后端实现中clock gating使能端setup violation问题 文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点.点击进去后出现任何损失与社区无关. 点击标题下「蓝色微信名」 ...

最新文章

  1. .net API跨域
  2. STM32 电机教程 12 - BLDC 闭环电流控制
  3. pickle序列化存在安全隐患
  4. DTCC 2020 | 阿里云程实:云原生时代的数据库管理
  5. C#中的thread和task之Task
  6. 【C++ Priemr | 15】派生类向基类转换的可访问性
  7. Qt文档阅读笔记-QWebView官方解析与实例
  8. SpringCloud 从菜鸟到大牛之八 服务容错 Hystrix
  9. CDM是什么?和CDP有什么区别?
  10. play for scala 通过网易smtp发送邮件
  11. sql2005安装过程,(不装C盘)
  12. C++常识之——C++中堆和栈的区别,自由存储区、全局/静态存储区和常量存储区...
  13. dataframe数据按行做线性拟合
  14. Atitit。  工作流引擎的发展趋势
  15. 海康威视摄像头初始化设置(新相机的第一次配置相机恢复出厂设置)
  16. Echarts图表的基本使用
  17. python高斯核函数_python 实现高斯核与卷积过程
  18. CC2530单片机开发
  19. python 圆周率_圆周率 python
  20. 51单片机制作简易计算器(动态数码管、矩阵按键)

热门文章

  1. 2022年初级会计考试精选复习题及答案
  2. 空间数据结构(四叉树/八叉树/BVH树/BSP树/k-d树)
  3. linux 音频播放器源码,基于Linux的音频播放器的设计 源代码.doc
  4. 微信公众平台上修改自定义菜单
  5. 个人支付方案(免签约)-支付宝当面付 附带源码
  6. 阿里分布式数据库服务相关介绍
  7. 计算机系统结构知识点总结
  8. 深入浅出DPDK学习笔记——认识DPDK
  9. 呼拉拉一片陈一舟和王兴PK声
  10. RecyclerView实现Item点击事件