ICC图文流程——(六)可造性设计Chip finishing

ICC可造性设计

 

chip finishing阶段的主要内容是检查设计,以及为提高良率(yield)和解决物理规则违规做的工作。主要包括以下内容:

                                 

这一步通常被成为DFM(Design For Manufacturing)可造性设计

良率指的是:有些芯片在wafer上制造出来就有缺陷,有的芯片能正常工作而有些不能,正常的芯片占总芯片的比例即为良率。

 

·Wire Spreading(连线拓展)

也成为 critical area analysis关键区域分析

制造过程中可能会出现随机的颗粒缺陷导致短路或开路

                                       •最小间距的电线最容易短路                                        •最小宽度的电线最容易开路

                                  

两条过于靠近的金属线之间如果有导电性颗粒在制造过程中落入二者之间,可能导致短路,解决办法为加大线间距(wire spread)

              

一条过于狭窄的金属线如果在制造过程中落入不导电的微粒,那么就会导致断路问题,解决办法是增加线宽(wire widening)。

                                            

通过GUI界面可以查看critical area的map图     进行关键面积分析

GUI: Finishing -> Short Critical Area Map and Finishing -> Open Critical Area Map

icc_shell>report_critical_area -fault_type short/open          报告的内容将会存在output_heatmap文件中。

                                                               

使用命令spread wires来减少短路的关键区域,widen wires来减少开路关键区域。

icc_shell>spread_zrt_wires /widen_zrt_wires

检查是否有DRC、LVS及其他违规

icc_shell>verify_zrt_route

                    verify_lvs

                    report_constraint -all

 

·Redundant via insertion (插入冗余通孔)

设计中,两个不同金属层(metal)的金属线通过一个via孔相连,如果这个via孔在制造过程中制造失败时,将导致层间互连失败。在制造过程中,掉落的微尘或电迁移(Electromigration)效应皆可使连线通孔via在长期操作下产生空洞(void)而造成断线,是产品良率降低,如图所示。

                                                                    

可以通过增加via孔的数量来解决该问题。Via孔的电阻率大于金属线,增加并联的via孔可以减少电阻,减少延时,改善时序。

                                                          

                                

命令icc_shell>report_design_physical -route 可以追踪设计中的双孔步通率:

                                            

生成将在冗余过孔插入期间自动使用的过孔映射表:icc_shell>insert_zrt_redundant_vias   -list_only

                                         

意思是说,把一个via1,换成一个1x2 的via1的阵列,也就是double via insertion

使用默认的中等强度进行插入冗余过孔:   icc_shell>insert_zrt_redundant_vias    -effort medium

 

·Fill Cell insertion(插入填充单元)

填充单元是为了填满Core区域中未摆放std cell的row/site,构建连续完整的N well/P well。可以减小动态电压降,同时避免出现N well间距的违反。

                                         

首先添加带有金属的填充单元(去耦电容DeCAP)

为了进行DRC检查,在插入金属填充单元之前,应完成标准电池PG rails的设计

icc_shell>insert_stdcell_filler     -cell_with_metal "fillCap64 fillCap32" \

-connect_to_power VDD -connect_to_ground VSS     -between_std_cells_only

带有金属的填充单元尺寸较大,有些地方可能插不进去,需要使用尺寸相对较小不含金属的填充单元。

icc_shell>insert__stdcell_filler   -cell_without_metal nfilll6 ... Fill" \

-connect_to_power VDD -connect_to_ground VSS     -between std cells only

                                                                          

GUI>Finishing>Insert Standard Cell Filler

                                                        

 

·Metal fill insertion

金属线的形成通过刻蚀工艺完成,稀疏的金属线比紧密的金属线更容易被过刻蚀(Metal over-etching),所以对最小金属密度有要求。

                                             

大量的etchant(刻蚀剂)与少量的金属将导致金属过刻蚀。解决办法:用Metal fill填充空白区域。如下图红色矩形区域:

                                                      

icc_shell>insert_metal_filler  -routing_space 2  -timing_driven

                                                         

GUI>Finishing>Insert Metal Filler

                                    

确保在本阶段添加的单元和所有电源地的pin都连接到电源的网络(包括之前的Fill Cell insertion):

icc_shell>derive_pg_connection -power_net VDD -power_pin VDD -ground_net VSS -ground_pin VSS

                     derive_pg_connection -power_net VDD -ground_net VSS -tie

 

·Antenna fixing(天线效应)

这一点的内容在Route阶段有提及,现在介绍一下其内容。

                                                     

芯片中,每一条长的金属线像是一根“天线”,收集游离的电荷,天线越长,收集的电荷越多,当电荷足够多时形成放电。而IC制造过程中常用的等离子刻蚀(plasma etching)技术将会产生大量的游离电荷。这种工艺带来的影响无法消除,却可以尽量减小。

金属线收集电荷导致与其相连的栅电位升高,最终导致强电场击穿栅氧。称为天线效应。

(process antenna effect,PAE)

通常用‘antenna ratio’来衡量一颗芯片会发生天线效应的几率。

‘antenna ratio’:构成“天线”的metal的面积与相连的gate oxide的面积的比率,比率越大越容易发生天线效应。

                                                  

关于.clf和.tcl文件的对照在Route阶段已经介绍。

天线文件中定义了可接受的电线长度,工具会根据定义自动进行优化修复。

icc_shell>source -echo scripts/cb13_6m_antenna.tcl      首先读入天线文件

        set_route_zrt_detail_options  -insert_diodes_during_routing  true

        route_zrt_detail  -incremental true   进行天线效应的修复

icc_sell>verify_zrt_route 查看是否还有天线效应的违例

                                              

常用的天线效应解决方法:跳线法、添加反偏二极管。

·跳线法:天线效应只发生在芯片制造过程中,而不是使用过程中。当一条金属线过长而导致天线效应,跳线法断开这条线,通过via孔连接到上一层金属,再从上一层金属通过via孔连下来。不同层金属是不同时形成的,当前金属层对栅极的天线效应时,上一层金属还不存在,通过跳线,减小存在天线效应的导体面积来消除天线效应。

                                   

这种方法通过改变金属布线的层次来解决天线效应,但是同时增加了通孔,由于通孔的电阻很大,会直接影响到芯片的时序和串扰问题,所以在使用此方法时要严格控制布线层次变化和通孔的数量。

向上跳线法用的较多,现代的多层金属布线工艺,在低层金属里出现PAE效应,一般都可采用向上跳线的方法消除。

 

·但当最高层出现天线效应时,则需要另一种消除天线效应的方法,添加反偏二极管。反偏二极管的阻抗小于栅氧绝缘层阻抗,反偏二极管会泻放掉“天线”上的电荷,使其不足以收集到能够击穿栅氧的电荷。

                                

 

·当两种方法都不能消除长走线上的PAE,可通过插入buffer缓冲器,切断长线来消除天线效应,同时为信号增强驱动能力。

 

 

ICC中的DRC LVS 天线效应违规都不是sign off级的,需要最终在calibre中验证修复。

保存设计,写出GDSII文件进行后续物理验证

icc_shell>write_stream  -cells $cell_name  xxx.gdsii

 

添加:

ICC导出GDS 导入virtuoso后没有pin/port的信息和名字

                                                            

解决方案:

在ICC输出GDS时,先对write_stream进行设置

需要对输出的GDS进行设置,下面两句可以生成引脚TXT和引脚金属层:
set_write_stream_options -output_pin text
set_write_stream_options -output_pin geometry
再生成GDS文件:
write_stream  -format gds  -lib_name lib_name   -cells design_cel   design.gds

                                                                        

  • 25
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用 Apache Commons Math 库中的 RealMatrix 和 RealVector 类来实现一致性检验-组内相关系数(ICC)。具体实现步骤如下: 1. 将数据按照组别分组,每个组内的数据作为一列,组数为 k,数据总数为 n。 2. 计算每个数据点的平均值,记为 x_bar。 3. 计算每个组的平均值,记为 x_k_bar。 4. 计算总体方差 S^2,公式为:S^2 = (1/n) * Σ(Σ(x_ij - x_bar)^2)。 5. 计算组内方差 S_k^2,公式为:S_k^2 = (1/(n-k)) * Σ(Σ(x_ij - x_k_bar)^2)。 6. 计算组内相关系数(ICC),公式为:ICC = (S_k^2 - S^2)/(S_k^2 + (k-1)*S^2/n)。 以下是 Java 代码示例: import org.apache.commons.math3.linear.*; public class ICC { public static double calculateICC(double[][] data) { int n = data.length; // 数据总数 int k = data[0].length; // 组数 // 将数据按照组别分组,每个组内的数据作为一列 RealMatrix matrix = new Array2DRowRealMatrix(data); // 计算每个数据点的平均值 RealVector x_bar = matrix.getRowVector(0).mapMultiply(1.0/n); for (int i = 1; i < n; i++) { x_bar = x_bar.add(matrix.getRowVector(i).mapMultiply(1.0/n)); } // 计算每个组的平均值 RealVector[] x_k_bar = new RealVector[k]; for (int j = 0; j < k; j++) { x_k_bar[j] = matrix.getColumnVector(j).mapMultiply(1.0/n); } // 计算总体方差 S^2 double S2 = 0; for (int i = 0; i < n; i++) { RealVector x_i = matrix.getRowVector(i); S2 += x_i.subtract(x_bar).dotProduct(x_i.subtract(x_bar)); } S2 /= n; // 计算组内方差 S_k^2 double Sk2 = 0; for (int j = 0; j < k; j++) { RealVector x_k = matrix.getColumnVector(j); Sk2 += x_k.subtract(x_k_bar[j]).dotProduct(x_k.subtract(x_k_bar[j])); } Sk2 /= (n-k); // 计算组内相关系数(ICC) double ICC = (Sk2 - S2) / (Sk2 + (k-1)*S2/n); return ICC; } } 调用示例: double[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}}; double ICC = ICC.calculateICC(data); System.out.println("ICC = " + ICC); // 输出:ICC = 0.9047619047619048
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值