后端设计中的特殊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
innovus> addSpareInstance -file spare_cells.txt -tie 0 -clock $clock_name
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元新人红包和免费半导体课程!