ICC的问题请教(insert_diode/insert_well_filler)
-default_diode_protection 30 -antenna_fixing_preference use_diodes \
-default_port_external_antenna_area 30 -merge_gates_for_antenna false
但是最后的结果还是会出现Antenna Violations,请问各位大神,还有什么办法能解决Antenna问题吗?
2,我在使用insert_well_filler -layer NWELL时,出现下述ERROR,NWELL也没有insert:
ERROR: cannot find WELL intersections on cell boundary - MX4XLM.
ERROR: cannot find WELL intersections on cell boundary - MX3X1M.
ERROR: cannot find WELL intersections on cell boundary - MX2X2M.
ERROR: cannot find WELL intersections on cell boundary - DFFQX1M.
ERROR: cannot find WELL intersections on cell boundary - NAND2X4M.
ERROR: cannot find WELL intersections on cell boundary - NOR4X2M.
ERROR: cannot find WELL intersections on cell boundary - NOR3X6M.
ERROR: cannot find WELL intersections on cell boundary - XOR2X2M.
ERROR: cannot find WELL intersections on cell boundary - NAND2BX2M.
ERROR: cannot find WELL intersections on cell boundary - AND4X2M.
ERROR: cannot find WELL intersections on cell boundary - AND3X2M.
WARNING: Nothing added. Check cells for well layer data
SUGGESTION: (1) check well layer minimum spacing in tech file
(2) check the input layer number
************** End of Well Filler ***********
请问大家是什么原因啊?
不要沉啊
ICC 不认为是antenna违反当然就不会自己做了,有读antenna的rule文件么? 或者定义的ratio什么的不太合适;
第二个没用过 不清楚了
ICC check 不到的 violations,肯定不会去 fix
少的话ECO,多的话想办法让 ICC identify antenna information 并且计算方法与 Calibre 一致。
看上去是说 FRAM view 没有 NWELL。
当然一般做 p&r 也不关心 NWELL 的 minspacing,所以 tf 也要看一下
应该是读了Antenna Rule,我看Man上的说明好像也对的。Rule内容如下:set lib [current_mw_lib]
define_antenna_rule $lib -mode 4 -diode_mode 2 -metal_ratio 0 -cut_ratio 0
define_antenna_layer_rule $lib -mode 4 -layer "METAL1" -ratio 400 -diode_ratio {0.203 0400.002200 }
define_antenna_layer_rule $lib -mode 4 -layer "METAL2" -ratio 400 -diode_ratio {0.203 0400.002200 }
define_antenna_layer_rule $lib -mode 4 -layer "METAL3" -ratio 400 -diode_ratio {0.203 0400.002200 }
define_antenna_layer_rule $lib -mode 4 -layer "METAL4" -ratio 400 -diode_ratio {0.203 0400.002200 }
define_antenna_layer_rule $lib -mode 4 -layer "METAL5" -ratio 400 -diode_ratio {0.203 08000.0030000 }
define_antenna_layer_rule $lib -mode 4 -layer "VIA12" -ratio 20 -diode_ratio {0.203 083.3375 }
define_antenna_layer_rule $lib -mode 4 -layer "VIA23" -ratio 20 -diode_ratio {0.203 083.3375 }
define_antenna_layer_rule $lib -mode 4 -layer "VIA34" -ratio 20 -diode_ratio {0.203 083.3375 }
define_antenna_layer_rule $lib -mode 4 -layer "VIA45" -ratio 20 -diode_ratio {0.203 083.3375 }
{}内的内容不是太明白,不知道这个Rule对也不对?
刚接触数字后端,能不能详细的讲解一下,谢谢!
ECO的话要怎么做?ICC identify antenna information又要怎么做?
Fram View中貌似是没有NWELL,那么如果我想在每条Power row上都加入Nwell,我该怎么做?
我自己顶
ECO 就是看到哪条 net 有 violation 就手动加 diode(其实一般提倡先试 hop layer)
那 ICC 为什么没有 check 到这些 violations 呢。
假设你这里 define_antenna_rule 与 Calibre 的 rule 一致,并且 Calibre 的 rule 是正确的:
{0.203 0400.002200 }意味着当 diode 面积大于 0.203 时, radio 要小于 (diode_area+0)*400+2200,当 diode 面积小于 0.203 时, radio要小于 "-ratio 400"
你要保证 FRAM view 包含 gate size 等,可以详细地看一下 set_route_zrt_detail_options 的各个 option
你这里是 mode 4(side-wall),要保证 tf 里面定义的 metal 的 thickness 与 Calibre 计算的一致。
如果你的 floorplan 是 double back,只想在每条 power row 加 Nwell, 那不应该这样做,而应该 insert STD filler
3Q,我会按你说的试试
那 ICC 为什么没有 check 到这些 violations 呢。
假设你这里 define_antenna_rule 与 Calibre 的 rule 一致,并且 Calibre 的 rule 是正确的:
{0.203 0400.002200 }意味着当 diode 面积大于 0.203 时, radio 要小于 (diode_area+0)*400+2200,当 diode 面积小于 0.203 时, radio要小于 "-ratio 400"
你要保证 FRAM view 包含 gate size 等,可以详细地看一下 set_route_zrt_detail_options 的各个 option
你这里是 mode 4(side-wall),要保证 tf 里面定义的 metal 的 thickness 与 Calibre 计算的一致。
===>如何来确认呢?我刚查了下,tf文件中
METAL1
unitMinThickness= 0.53
unitNomThickness= 0.53
unitMaxThickness= 0.53
METAL2
unitMinThickness= 0.53
unitNomThickness= 0.53
unitMaxThickness= 0.53
METAL3
unitMinThickness= 0.53
unitNomThickness= 0.53
unitMaxThickness= 0.53
METAL4
unitMinThickness= 0.53
unitNomThickness= 0.53
unitMaxThickness= 0.53
METAL5
unitMinThickness= 0.99
unitNomThickness= 0.99
unitMaxThickness= 0.99
你说的是这个吗?具体怎么计算?
如果你的 floorplan 是 double back,只想在每条 power row 加 Nwell, 那不应该这样做,而应该 insert STD filler
===>我试着加了
insert_stdcell_fill -cell_without_metal {FILL1M FILL2M FILL4M FILL8M} -between_std_cells_only -respect_keepout
但是好像没有效果。是不是我弄错了?
谢谢!
1. 手工跳线,icc搞不定的只能手工修,
2. insert_well_filler用到的机会非常少,你要干啥, rowend nwell 只需要add_end_cap即可,
现在就是我PR出来的结果,在有些地方well是断开的,有可能会造成Drc Violations,所以。
现在显示的是我目前的well,总是有些地方是断开的,有可能会造成Drc Violations
考,你加filler不就好了,insert_stdcell_filler
试过了,请看10#,还是不行啊
去掉-between_std_cells_only,加上-ignore_soft_placement_blockage ,
OK,我下周试试,
试过了,貌似还是没区别。
难道是我人品太差?
smic18 1p5m arm 库么,应该没问题的啊,加了filler, nwell还连续不起来?
你dump gds有问题么,
我重新试了一下,OK了,3Q
虽然不懂,顶一下,学习.......
maomaoyu太好学了
你现在是加fill cell来解决这个nwell问题吗?还是加well fill?我试着加well fill是不行的,问题和你一样。
我是通过加Filler cell
我有一些cell之间空闲太小,无法加入fill cell我目前工艺最小的fillceel 是0.58um所以有的地方加不进去怎么办呢?
你使用的是什么命令?我也是新手一个,可能我也是误打误撞才弄好了,咱们可以一起研究一下。
你好:这是加fill cell的comand 但是这样还是有nwell空隙。
insert_stdcell_filler -respect_keepout-cell_with_metal "FILLCAP3 FILLCAP8 FILLCAP4" -connect_to_power VDD -connect_to_ground VSSinsert_stdcell_filler -respect_keepout-cell_with_metal "FILL1 FILL2 FILL4" -connect_to_power VDD -connect_to_ground VSS
FILL1是最小FRAM大概是0.58um的宽。
不知道well fill 怎么加?
学写了。