首页 > 其他分享 >数字后端要撒哪些sparecell,撒多少合适 ------ 转载

数字后端要撒哪些sparecell,撒多少合适 ------ 转载

时间:2023-03-14 19:23:43浏览次数:39  
标签:后端 ECO INV ICG ------ DFF sparecell AND2

本文转载自: https://mp.weixin.qq.com/s/y2j_dRF672a3VtWrUILDog

 

从有利于功能ECO、时序ECO,且尽量减少面积比例的角度看,APR阶段要撒哪些sparecell,撒多少合适?

我们下面从几个方面来讨论一下。

一、从必须要包括的逻辑门角度来看

我们知道任何组合逻辑都可以由AND2(二输入与门)、OR2(二输入或门)、INV(反相器)三种门电路实现。那么AND2、OR2、INV就必须都要包括在后端的sparecell列表里。

AND2
OR2
INV

二、再加一些常用的CELL

有些搭电路需要与非门,可以用AND2+INV来实现。但考虑到AND2和INV可能离得稍远,不如直接插入NAND2。并且电路上AND2正是由NAND2+INV组合而来,所以同样驱动能力的NAND2的面积小于AND2,当然更小于AND2+INV的组合。

同理,为了简化搭逻辑的复杂度,我们就需要再加入NOR2、XOR2、MUX2等。

关于MUX2,可以再进一步讨论一下。我们知道在做综合时,DC几乎不用选择器来实现,更多的是用AO、AOI这种。如下图,MUX与AO是可以等价变换。

 

 

并且,我们可以看出,AO可以更直观地变换成AND2和OR2。如下图:

 

 

 

NAND2
NOR2
XOR2
MUX2
AO

三、时序DFF、LATCH

经常遇到ECO要打拍,或者是加寄存器,所以我们提前撒一些DFF也是必要的。但数量不需要太多,根据具体设计的情况来定。

这里有个建议,可以选DFF功能最全的类型,就是同时带SET和RESET,且同时带Q和QC的。时钟边沿选上升沿触发的,因为大部分情况下需要上升沿。如果偶尔需要下降沿,可以在时钟端加一个INV。

LATCH呢,可加可不加,不是必须的。ECO时一定需要LATCH的情况并不多。

DFF_R_S_Q_QC
LATCH

四、集成门控时钟ICG

最近遇到一个需求,需要ECO来插入门控时钟,降低功耗。如果sparecell list里没有提前放置ICG将会比较麻烦。

一种可能的方法是把综合自动插入ICG挪来用用。但综合时一般是多bit一起插一个ICG,要挪出来的话,就需要把多个DFF的D端全部加MUX。而sparecell list里的MUX一般也不会太多,所以这种方法能不能实现就看运气了。

所以,能提前放置几个ICG是有必要的。

ICG

五、考虑max tran、max cap、长线、setup、hold等DRC和时序的优化

一般逻辑sparecell不要选最小的驱动能力,可以用X2的。毕竟ECO时,sparecell离得有点远,附近不会刚好就有需要的类型。

另外,还需要加入一些大驱动的INVX4、INVX6、BUFX4、BUFX6、BUFX12来优化时序。

插少量的DELAY cell也是很多帮助的,常常用来修改hold,或者做一些特别的延时。

INVX4
INVX6
BUFX4
BUFX6
BUFX12

六、各种sparecell的比例

上面提到这些sparecell的比例也是有讲究的。一般情况下,可以从综合结果里提取各种cell的比例。

也可以根据以往的经验,或者设计的特点来调整。尤其是可以大概估一估DFF可能的个数。

我这里也给一个参考:

七、sparecell总面积占整个digital的面积比例

这个通常来说与设计的成熟度有关。对于第一版,肯定要多加一些,比如sparecell占整个数字面积的8~10%。第二版可以少加一些,4~5%。第三版可以只加3%。

如果项目中大部分是买的IP,集成起来做soc,可以比例稍低一些。

 

标签:后端,ECO,INV,ICG,------,DFF,sparecell,AND2
From: https://www.cnblogs.com/hxing/p/17216002.html

相关文章

  • 2023/3/14结对总结
     ......
  • 01_初入Git之常用命令
    Git常用命令在文件夹内右键选择GitBashHere,可以直接打开Git客户端代码快捷方式:写出前几个字母然后敲击两次Tab键即可自动补齐代码命令名称作用gitconfig--......
  • 02_再入Git之分支操作
    1)什么是分支在版本控制中,同时推进多个任务。创建每个任务的单独分支。一位置程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候不会影响主线分支的运行。可......
  • 03_再再入Git之GitHub操作
    GitHub操作1)创建远程仓库1.1选择NewRepository1.2输入仓库名称,最好与本地的文件夹同名1.3创建远程库别名,访问路径过长1.3.1查看全部别名(gitremote-v)$......
  • 04_GitHub之SSH免密登录
    SSH免密登录在此电脑的c盘的用户中找到自己的用户文件,我的地址是C:\Users\王杰进入用户文件后右键点击GitBashHere在跳出来的窗口中输入:ssh-keygen-trsa-C"自己G......
  • 05_IDEA集成Git
    IDEA集成Git1)配置Git忽略文件(没效果,直接看下面用插件)1.1创建xxxx.ignore文件在用户家目录下新建文本文档,取名为git.ignore,打开后输入如下代码并保存#Compiledclass......
  • IDEA集成GitHub
    IDEA集成GitHub1)设置GitHub账号(1)在设置中找到GitHub,如果没有需要下载GitHub插件(2)选择登陆方式,账号密码登录比较困难,与网络有关系,所以使用Token口令登录(3)点击生成然后......
  • YonBuilder移动开发-移动原生插件开发环境配置教程
    YonBuilder移动开发可以实现一套代码,多端生成,快速构建企业级移动应用。移动插件市场中有许多功能插件,可添加到应用中使用,提高开发效率。如果插件市场中没有满足需求的插件,......
  • [Vue3] 组件上的ref不能与组件名相同
    情景关键组件没有正确引入函数无限递归解决如果在网上搜索[Vuewarn]:Componentismissingtemplateorrenderfunction.或[Vuewarn]:Invalidvnodetype......
  • AcWing100 -- 差分 & 贪心
    1.题目描述题目给定我们一个数组,我们每次可以对数组的一段区间加一或者减一,问我们,使得序列所有数字相等的最少操作次数以及方案个数2.思路很容易想到差分,将题目转......