数字IC后端实现阶段常见功能cell有哪些?比如AND,AOI,NAND等。 physical cell有哪些?都是干什么用的?
数字后端零基础入门系列 | Innovus零基础LAB学习Day9
(1) well tap cells:防止latch-up
icc2_shell> create_tap_cells -lib_cell $tapcell_ref -pattern stagger -distance $distance -skip_fixed_cell
Inovus中添加tap cell命令如下,它是支持根据power domain来添加tap cell的。
set_well_tap_mode -inRowOffset 15
addWellTap -cell TAPCELLBWP16P90CPD -cellInterval 30 -prefix WELLTAP -powerDomain PD_AW_ON
addWellTap -cell TAPCELLBWP16P90CPD_VPP_VSS -cellInterval 30 -prefix WELLTAP -powerDomain PD_PS
数字后端版图必备!TapCell预防Latchup栓锁效应(附对应版图画法)
(2) Boundary Cells (EndCap):std cell边界需插入,一方面可以保持阱和注入层的连续性,同时也可以在刻蚀和离子注入的时候对row边缘的std 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中添加Boundary cell的命令如下:
setEndCapMode -reset
setEndCapMode
-leftEdge BOUNDARY_RIGHTBWP16P90CPD
-rightEdge BOUNDARY_LEFTBWP16P90CPD
-leftTopCorner BOUNDARY_PCORNERBWP16P90CPD
-leftBottomCorner BOUNDARY_NCORNERBWP16P90CPD
-topEdge {BOUNDARY_PROW4BWP16P90CPD BOUNDARY_PROW3BWP16P90CPD BOUNDARY_PROW2BWP16P90CPD BOUNDARY_PROW1BWP16P90CPD}
-bottomEdge {BOUNDARY_NROW4BWP16P90CPD BOUNDARY_NROW3BWP16P90CPD BOUNDARY_NROW2BWP16P90CPD BOUNDARY_NROW1BWP16P90CPD}
-rightTopEdge FILL4BWP16P90CPD
-rightBottomEdge FILL4BWP16P90CPD
-fitGap true
-boundary_tap true
set_well_tap_mode -inRowOffset 11
set_well_tap_mode
-rule 48
-bottom_tap_cell BOUNDARY_NTAPBWP16P90CPD
-top_tap_cell BOUNDARY_PTAPBWP16P90CPD
-cell TAPCELLBWP16P90CPD
芯片Tapeout前才发现LUP.6 Base Layer Calibre DRC Violation的ECO方案
(3) Tie Cells:在芯片设计中通常会有不少信号需要给定固定的输入如固定高电位或者固定低电位,同时很多无明确输入的open信号也最好固定在某个点位,这时就需要连接到tie cell。
tie cell分为tie high和tie low两种,前者将信号固定在高电位,后者将信号固定在低电位。
icc2_shell> set_lib_cell_purpose -include optimization [get_object_name [get_lib_cells */$tie_ref ]]
Innovus中添加tie cell也必须根据power domain来添加,否则工具只会在最顶层那个domain添加tie cell。最后会发现设计中存在一大堆gate floating的情况。
setTieHiLoMode -prefix Tie -maxFanout 8 -cell “TIEHBWP16P90CPD TIELBWP16P90CPD”
addTieHiLo -powerDomain PD_PSO
addTieHiLo -powerDomain PD_AW_ON
(4) Antenna Cells:通常在绕线阶段让工具在发现有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来控制工具在绕线阶段通过插入修复antenna cell来修复antenna 天线效应违例violation。
setNanoRouteMode -quiet -drouteFixAntenna true
setNanoRouteMode -quiet -routeInsertAntennaDiode true
setNanoRouteMode -quiet -routeAntennaCellName “ANTENNABWP16P90CPD”
(5) Filler Cells:主要是用来填补std cell之间的空隙以保证阱的连续性,同时也可以对周围的std cell有一定的保护作用。
icc2_shell> create_stdcell_filler -lib_cell $fillers_ref -continue_on_error
(6) DECAP Cells:在高频电路的时钟或者数据信号大规模同时翻转时,巨大的充放电电流可能会导致电源电压的下降,从而显著影响某些区域的std cell的供电,进而影响cell的速度。
要解决这个问题,最常见的方法之一就是增加电源的电容值,而这主要是通过加入DECAP cell来完成。在电源电压正常的时候,DECAP可以充电来存储能量,当电源电压较低的时候就可以放电来起到一定的缓冲作用。
icc2_shell> create_stdcell_filler -lib_cell $decap_ref -continue_on_error
Innovus中插入filler的命令如下所示:
setFillerMode -diffCellViol true -doDRC true -corePrefix DeCap -core {DCAP32BWP40P140 DCAP16BWP40P140 DCAP8BWP40P140}
addFiller
(7) 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
(8) Spare Cell:来提高芯片流片后的改版能力。
(9) MIMCAP Cells:其中MIM指的是Metal-Insulator-Metal,这是一种特殊类型的用来提供电容的cell,区别于DECAP的主要特点是电容量较大,大小也比一般的std cell要大很多,而且使用的金属层一般比较高,可以重叠放在绝大部分类型的cell上而不产生DRC。
icc2_shell> create_cell $mimcap_name $mimcap_ref