数字IC后端设计实现中的Post-mask ECO应该怎么做?

在数字IC后端设计实现中,我们经常会涉及到芯片需要做Function ECO。常见的Function ECO可以分为pre mask ECO和post mask ECO两种。因此,作为一个数字IC后端工程师,必须熟练掌握这两种Function ECO的实现流程及其实现技巧。

两者的区别在于,pre mask ECO的晶体管和布线层都还没有开始做出mask,此时可以往netlist里面添加cell。而post mask ECO的晶体管层已经开始进行加工了,但是布线层还没有加工,还能修改,可以通过ECO改变各种已有cell的连线关系,但是不能添加新的cell,有一定局限。

换句话说,从freeze到tapeout之间的ECO叫pre mask ECO;

tapeout之后的ECO叫做post mask ECO。这里包含以下几种情况:

1)芯片已经tapeout base layer后的ECO

2)芯片已经wafer out的ECO

Pre mask ECO:

Pre mask ECO比Post mask ECO要灵活得多。在tapeout之前,如果发现有任何需要修改的地方,都可以用这种方法。它可以改成百上千个单元。该操作主要是针对静态时序分析和后仿真中出现的问题,对电路的网表直接进行修改,待网表修改完毕之后反馈到PR工具中对标准单元的布局和连线进行小范围的改动。当然,直接对网表进行修改是存在风险的,所以之后一定要进行形式验证(formal verification),确保功能实现。

Post mask ECO:

Post mask ECO是利用预先留好的备用单元(Spare Cell或ECO Cell),做的逻辑修改。如果后期发现Timing存在问题(或者想小动Function),可以利用附近的Spare Cell或ECO Cell搭配上层金属连线来修改电路结构。比起Pre mask ECO,这种ECO受限于Spare Cell的位置,所以它的修改规模十分有限。

ECO cell和Spare cell的区别

Spare cell其实就是正常的逻辑功能cell,而ECO Cell则仅仅是把相关的base layer做好了,其他都没有任何连接的cell。也就是说ECO Cell理论上是可以充当library库中常见的逻辑功能cell。

ECO cell是内部晶体管没有链接的cell, 是可以被『编程』的cell, 在做ECO 时,通常用最底层金属如M1 将ECO cell 内部的晶体管链接起来,以实现对应的逻辑功能,如:与或非、选择器、寄存器等等。

Function ECO Cell

所以,Spare cell的优势明显不如ECO Cell。而且更重要的是spare cell是正常的逻辑单元,它们的input都需要接到tie cell上(不允许有任何的input floating情况)。

而且Spare Cell的逻辑功能类型还得备齐,否则需要做ECO时可能会发现没有想要的逻辑功能cell。一般spare cell都是以一系列常见逻辑功能cell堆叠在一起的一个阵列。

当然Spare cell也有一个好处,就是后期ECO时只需要动到Metal layer,而ECO cell是需要动到Contact这一层。

目标需求

做任何ECO的目的是非常明确的,希望把我们功能上的bug修复掉,而且成本越低越好,最好是不花钱。

Pre-mask ECO是不需要额外的mask成本,但Post-mask ECO则大概率是需要额外的mask成本。

比如目前芯片已经tapeout,foundary还在加工base layer,此时如果要做的ECO仅仅需要更改metal layer(因此两个ECO点很近,只需要改连接),那么是可以不花费额外的mask成本的。

【思考题】如果芯片已经tapeout,foundary已经即将完成base layer的加工,此时如果要做的Function ECO需要添加一些逻辑功能cell,是否一定会增加mask的成本?

又比如芯片已经wafer out,芯片封装测试后发现存在功能上的Bug,需要加入一些运算逻辑。此时肯定需要动到Metal layer甚至base layer。所以这时候做ECO的代价是最大的。

那此时为了最大程度减少做ECO带来的成本,在数字后端实现时就需要想办法尽量不动base layer以及少动metal layer来完成我们的Function ECO。

怎么做?

知道数字IC后端实现PR flow的同学,都知道我们在route opt结束后还有一步是chip finish。这步就是插普通Filler和ECO Filler。

在做ECO 之前这类ECO Filler『GA array filler』被放在设计中,在做ECO 时会用GA functional cell 替换GA filler cell. GA Array filler 是physical only cell, 就是只在lef 中有定义在lib 中没有定义,只存在于DEF 中不在netlist 中。GA functional cell 才是真正有逻辑功能的cell.

在实现过程中,先用GA array Filler 占位置,有ECO进来时,需要先将GA array Filler remove 掉,再把GA functional cell放置上去,如果加入的GA functional cell宽度小于原来的GA Filler,我们还需要在剩下的空位上填上新的GA array filler。

GA Filler Layout

GA cell 有多种site, 如1, 3, 5, 10. ECO 时可以根据逻辑功能,将一个GA Filler 映射成多个GA functional cell. 传统的GA cell 内部没有任何预先定义的逻辑功能,所以可以用来组合任何逻辑功能,如一个10-site 的GA filler 可以映射成:10个inverter 或5个MUX 或1个DFF。

这里举一个芯片测试阶段发现的功能Bug例子。下图虚线框内为需要新增的逻辑功能cell。

Function ECO案例

ECO base cell如下图最左侧所示,对应的名字为GFILLER2。通过查看ECO库我们发现这个cell的大小刚好与GA Function CELL Inverter是同等大小。而且发现ECO功能cell Mux的大小与ECO FillerX4大小是一致的。

ECO Cell和GFiller Layout对比

所以,针对这个Post Mask ECO,我们首先需要在driver0,driver1和后面那个AND2这中间找出一个GFILLER2和一个GFILLER4的ECO Filler cell,然后用GA Functional inverter和MUX进行替换。

其次,还需要将对应的逻辑连接好。这里主要涉及到以下几个逻辑连接:

1)driver0和driver1对应的net断开

2)将driver0和inverter的input端连接在一起

3)将mux的两个输入端分别连接到inverter的输出和driver1上

4)将原来load的A1 pin对应的net断开,并把它连接到mux的输出端

最后,设置绕线层次范围约束,做ecoRoute。

如果希望有个实战环境,可以参加咱们社区的IC训练营进行实战演练。

如何检查做的对不对?

比如上面那个ECO,我们设置了只能用M1-M3来绕线。完成绕线后我们肯定无法通过肉眼来看是否有使用M3以上的金属层来绕线,那么我们如何来确保工具按照我们约定的条件来做了呢?

答案是做LVL(Layout比Layout).这个工作通过calibre工具就可以完成。主要原理是通过比对ECO前后两个GDS的差别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28090.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL-每日一题【585.2016年的投资】

题目 Insurance 表: 请你编写一个 SQL 查询,报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和: 他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。他所在的城市必须与其他投保人都不同&#…

【Spring——Spring的基础与创建】

目录 🍧1. 什么是 Spring ? 🫖1.1 容器 🍙1.2 IoC 🥽1.3 汽车类——传统写法 🍘1.4 汽车类——IoC 写法 🌭2. 配置 maven 国内源 🌮2.1 在设置中勾选文件 🍤2.2 在…

自动化测试selenium(1)

自动化测试📪selenium 自动化测试📪selenium自动化测试📑selenium定位元素📍 实战测试百度搜索🔍安装测试环境Idea中进行自动化脚本编写打开网页:实现搜索功能:浏览器清空效果clear()&#xff1…

使用typora+PicGo+Gitee简单实现图片上传功能

本文通过配置PicGoGitee来实现typora图片上传功能,系统是window 注意下载的清单有:PicGo,node.js,配置有:PicGo,node.js,gitee,typora 看着复杂实际上并不难,只是繁琐&am…

基于时域特征和频域特征组合的敏感特征集,再利用CNN进行轴承故障诊断(python编程)

1.文件夹介绍(使用的是CWRU数据集) 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 2.模型 按照1024的长度分割样本,构建内圈故障、外圈故障、滚动体故障和正常轴承样本集 2.1.计算11种时域特征值 # 计…

专题-【线索二叉树】

15年三-1) 20年一-11)

MYSQL表操作(DML,DDL)

建表并插入数据: mysql> create table worker(-> dept_id int(11) not null,-> emp_id int (11) not null,-> work_time date not null,-> salary float(8,2) not null,-> poli_face varchar(10) not null default 群众,-> name varchar(20) …

【云原生】k8s图形化管理工具之rancher

前言 在前面的k8s基础学习中,我们学习了各种资源的搭配运用,以及命令行,声明式文件创建。这些都是为了k8s管理员体会k8s的框架,内容基础。在真正的生产环境中,大部分的公司还是会选用图形化管理工具来管理k8s集群&…

『分割』 平面模型分割

PCL提供的几个常见模型: pcl::SACMODEL_PLANE:平面模型,用于拟合平面结构的点云数据。 pcl::SACMODEL_SPHERE:球体模型,适用于拟合球体结构的点云数据。 pcl::SACMODEL_CYLINDER:圆柱体模型,用…

Java阶段五Day08

Java阶段五Day08 文章目录 Java阶段五Day08内容回顾学习内容目的自动配置原理SPI-API:一对类似的概念 自定义Starter属性配置问题 网关组件SpringCloud Gateway网关架构微服务网关介绍Spring Cloud Gateway(技术选型)网关转发入门案例明确案例需求实现案…

LCD-STM32液晶显示中英文-(5.字符编码)

目录 字符编码 字符编码说明参考网站 字符编码 ASCII编码 ASCII编码介绍 ASCII编码表 中文编码 1. GB2312标准 区位码 2. GBK编码 3. GB18030 各个标准的对比说明 4. Big5编码 字符编码 字符编码说明参考网站 字符编码及转换测试:导航菜单 - 千千秀字 …

Linux5.17 Ceph应用

文章目录 计算机系统5G云计算第四章 LINUX Ceph应用一、创建 CephFS 文件系统 MDS 接口1.服务端操作2.客户端操作 二、创建 Ceph 块存储系统 RBD 接口三、创建 Ceph 对象存储系统 RGW 接口四、OSD 故障模拟与恢复 计算机系统 5G云计算 第四章 LINUX Ceph应用 一、创建 CephF…