什么是standard cell (标准单元) ?

参考文章:

聊一聊芯片后端的标准单元-standard cell - 知乎 (zhihu.com)

standard cell中的7T和9T中的"T"指的是什么?或者是什么的缩写? - Layout讨论区 - EETOP 创芯网论坛 (原名:电子顶级开发网) -

 数字后端基本概念介绍——Standard Cell_Tao_ZT的博客-CSDN博客


为什么会需要standard cell?

Standard cell,标准单元,或者简称cell,是数字芯片后端最基本的概念之一。我们为何要设定标准单元呢,以及这些cell是怎么应用到我们的后端设计中的呢?

首先,在芯片设计最早期门电路不多,晶体管都靠手画在图纸上,所有芯片都是一些逻辑简单的全定制芯片的时代,是不存在什么标准单元的概念的。那时的工程师们只需要把一个一个的晶体管摆好,电路就可以正常工作了。但是随着集成化越来越高,所有的门电路都靠一个个手画变得非常不现实,一个非常朴素的想法就是把一些用过很多次的电路打包,就比如最基本的与或非门,我们要用的时候直接调用这个包就行了,就像复制粘贴一样,这就非常方便了。比如一个二输入与门,我只要设计好它的电路画出它的版图提取出来它的各项参数,就可以无限次的在整个芯片上复制了。而后,更进一步,我们可以把整个芯片所有可重用的部分都打包起来,为了方便我们摆放和连线,我们会制定一些规范化的rule,比如我们规定每个包要有固定的高度,称为row,宽度可以以一个CPP(栅极间距,contacted poly pitch)的距离变化,称为site。这样就成为了一个std cell。

Std cell可以大大简化我们的设计复杂度,它的意义,就像盖楼房的砖头,构成生物的细胞,画画的颜料一样。如果对于任何一个逻辑门都要求后端从头晶体管开始设计,那是真的无法想象的。目前所有的芯片已经全部采用了这种设计方式。但是,不可避免地,它会有一些资源的浪费,因为每一个cell都是有统一的设计规则,必然不能针对性的在一些小的方面进行优化。举个例子,在芯片的某个地方可以把pin出在cell左侧比较好route,但是这种cell设计的都是在右侧。当然,类似这样的影响在大型design中可以忽略了。

设计std cell是一件非常复杂的事,不亚于设计一款芯片的复杂程度。首先是电路的设计,schematic design。有一些具有相对复杂逻辑功能的cell,它的逻辑电路如何设计,如何兼顾PPA地进行设计,其实是很难的,设计结束后还要进行许多的验证之类。而后layout工程师要设计画出cell的版图。我们后端设计一般绕线层十几层顶天了,版图工程师要面对的是数不清的各种各样的层,有metal,有oxide,有poly,有n区有p区,应有尽有,还要考虑尽可能出pin M1或者M2出,低一点,给我们APR预留更多的绕线资源。而后还要有专门的工程师来进行cell 参数的提取,一般就是指power和timing的提取。Power应该主要就是leakage,timing就很麻烦了,需要在各个corner下,每个corner出一套它的各项参数。举个例子,一个cell的delay信息,基本需要在各个PVT条件下,测出各个引脚在各种逻辑状态下,input transition和output load各种情形下,cell的delay值。更别提一些OCV的信息,还有POCV的lvf信息了。最终所有这一切做好后,就可以生成cell的LIB文件了。结合cell的LEF文件(物理信息),我们后端就可以愉快的用这些cell搭积木啦。

我们后端在用的时候,这些cell就是一个一个的黑匣子,看不见内部,只能看到它的大小和出pin的信息。读入网表文件后,相应的cell就出现在我们的GUI界面了。对了,前端在综合的时候也需要读cell的lib。他们拿到的RTL代码不会指定一个与门要用哪种cell,比如我们目前有两种不同的与门cell,逻辑功能一样,但是有一些别的差异,综合工具就会全面考虑这一块电路,选用相应的cell作为那一段verilog代码里表示的与门。


standard cell中的7T和9T中的"T"指的是什么?或者是什么的缩写?

Q:

对标准单元所说的9 track和12 track是什么意思?(同一种工艺下)这两种单元有什么区别?

A:  7T指7个track, stand cell的高度。

P.S.,

一般site width就是metal 2 pitch ,比如SMIC18 的 0.56 x 5.04 ,  0.56 就是metal 2 pitch,
因为std cell pin基本上都是由metal 2 连接出来的,  

高度一般都是 site width的整数倍,比如7, 8, 9 , 10 ,12 倍,也就叫做7/8/9/10/12 track单元,
比如 0.56 x 5.04 的就是9 track,  0.56 x  3.92 的就是 7 track,
0.2 x  2.4 ( SMIC 65 ) 是12 track,  0.2 x 1.8 ( TSMC65) 是9 track,

区别主要是:
1)带不带tap (n/p well pickup) ,但是也不是绝对的,
比如SMIC18  sc-x 9 track带tap,  sc-m  7track不带tap,不带tap的要用tapcell来偏置电位,
但是比如 TSMC40 nm的 12 track TCBNBWP12T ,也不带tap,  
TSMC65  tcbn65bwp  9 track 带 tap,  

2)一般来说9 track是 属于标准size, 7 track属于小size,也就是低功耗一些,速度慢些,
10、12 track 是高速,  一般 metal1的rail做的更宽, 管子好像没啥区别,  rail做的宽,自然能走更多的电流,自然速度就快了, 功耗大了,有的还添加metal2 rail比如65nm以下的库,  这样速度更快了,
选几个track 是由设计目标决定的,如果简单些 ,就选9 track标准带tap的, 比较方便
低功耗选7 track,timing不够就选12 track的,

ARM的9 track叫sage-x ,  7 track叫metro,  12 track叫POP (performance optimization packets),


Standard Cell在lib和lef中的表现形式 

Standard cell是设计中最基本的逻辑单元了,是基本门和简单逻辑电路。我们平时常用的buffer, inverter, register等都属于标准单元。

standard cell的时序信息记录在.lib文件中:

 cell (INVX12_CSC28SL) {area : 0.86528;cell_footprint : "inv";                                                                                                                            threshold_voltage_group : "LVT";pg_pin (VDD) {pg_type : primary_power;voltage_name : "VDD";}...

物理信息记录在lef文件中:

MACRO INVX12_CSC28SL      CLASS CORE ;ORIGIN 0 0 ;FOREIGN  0 0 ;SIZE 1.26 BY 0.64 ;SYMMETRY X Y ;SITE unit ;PIN VDDDIRECTION INOUT ;USE POWER ;SHAPE ABUTMENT ;PORTLAYER M1 ;RECT  -0.052 0.6 1.612 0.68 ;

standard cell在netlist中完成例化,INVX12_F_CSC28SL是cell名字,U28是例化以后的名字。

INVX12_F_CSC28SL U28(

      .Z(n21), .A(n24)

  );

下图就是stardand cell在软件中的样子。他们被安放在row上

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

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

相关文章

手写嵌入式操作系统(基于stm8单片机)

#include <stc8h.h> #include <intrins.h> #define MAX_TASKS 2 //简化方面,我们当前操作系统只有2个task #define MAX_TASK_DEP 32unsigned char idata task_sp[MAX_TASKS]; // 任务的堆栈指针 unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];// 每个…

2023年7月京东彩妆市场品牌销售排行榜(京东数据挖掘)

鲸参谋监测的京东平台7月份彩妆市场销售数据已出炉&#xff01; 鲸参谋数据显示&#xff0c;7月份彩妆市场整体呈现下滑趋势。从大盘数据可知&#xff0c;京东7月的销量将近350万&#xff0c;环比下滑约38%&#xff0c;同比下滑约22%&#xff1b;销售额为5.1亿&#xff0c;环比…

Integer、Long 等包装类 == 值判断、地址判断与缓存

先看下以下代码和输出 public static void main(String[] args) throws Exception{Integer a-128;Integer aa-128;System.out.printf("aaa? %s \n",aaa);Integer b127;Integer bb127;System.out.printf("bbb? %s \n",bbb);Integer c128;Integer cc128;Sy…

stable diffusion实践操作-LLuL 插件-局部修改

系列文章目录 大家移步下面链接中&#xff0c;里面详细介绍了stable diffusion的原理&#xff0c;操作等&#xff08;本文只是下面系列文章的一个写作模板&#xff09;。 stable diffusion实践操作 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生…

代码随想录day22

235. 二叉搜索树的最近公共祖先 ● 力扣题目链接 ● 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 思路 ● 和普通二叉树相比&#xff0c;简单很多 ● 如果落在了[p, q]之间&#xff0c;返回root&#xff1b;都小就向右看&#xff0c;都大就向左看 代码 c…

JVM垃圾回收机制和常用算法(简洁版)

垃圾收集 (Garbage Collection,GC) 垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的&#xff0c;只存在于线程的生命周期内&#xff0c;线程结束之后就会消失&#xff0c;因此不需要对这三个区域进行垃圾回收。 判断一个对象是…

浅析Keil MDK下串行Flash的下载算法设计

浅析Keil MDK下串行Flash的下载算法设计-电子发烧友网 今天给大家介绍的是 Keil MDK 工具下 i.MXRT 的串行 NOR Flash 下载算法设计。 在 i.MXRT 硬件那些事系列之《在串行 NOR Flash XIP 调试原理》一文中&#xff0c;痞子衡简单提了一下串行 NOR Flash 下载算法的概念&…

使用词袋模型(BoW)测试提取图像的特征点和聚类中心

文章目录 环境配置代码测试 环境配置 (1) 导入opencv&#xff0c;参考链接 https://blog.csdn.net/Aer_7z/article/details/132612369(2) 安装numpy 激活虚拟环境的前提下&#xff0c;输入&#xff1a; pip install numpy(3) 安装sklearn 激活虚拟环境的前提下&#xff0c;输…

数据结构前言

一、什么是数据结构&#xff1f; 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 上面是百度百科的定义&#xff0c;通俗的来讲数据结构就是数据元素集合与数据元素集合或者数据元素与数据元素之间的组成形式。 举个…

vs中git提交合并分支的步骤记录

vs打开终端 PS D:\project\et_lower4_driver> git pull Already up to date. PS D:\project\et_lower4_driver> git branch * kiyun_usb7851 master PS D:\project\et_lower4_driver> git checkout master Switched to branch master Your branch is up to date wit…

MySQL与postgreSQL数据库的区别

MySQL 是一个流行的开源关系型数据库管理系统&#xff0c;具有以下优势&#xff1a; 开源和免费&#xff1a;MySQL 是一个开源软件&#xff0c;允许用户免费下载、使用和修改。它的免费版本&#xff08;Community Edition&#xff09;提供了广泛的功能&#xff0c;适用于大多数…

操作系统(OS)与系统进程

操作系统&#xff08;OS&#xff09;与系统进程 冯诺依曼体系结构操作系统(Operator System)进程基本概念进程的描述&#xff08;PCB&#xff09;查看进程通过系统调用获取进程标示符&#xff08;PID&#xff09;通过系统调用创建进程&#xff08;fork&#xff09;进程状态&…

小程序进阶-env(safe-area-inset-bottom)的使用

一、简介 env(safe-area-inset-bottom)和env(safe-area-inset-top)是CSS中的变量&#xff0c;用于获取设备底部和顶部安全区域的大小。 所谓的安全区域就是指在iPhone X及以上的设备中&#xff0c;为避免被屏幕的“刘海”和“Home Indicator”所遮挡或者覆盖的有效区域区域&am…

UICollectioView 使用集合

文章目录 一、前言二、UICollectionView基础知识2.1多个对象协作而成2.2 DataSource与Delegate三、UICollectionView 常用操作3.1 允许cell多选、 设置默认选中、选中与取消选中控制3.2 显示编辑按钮3.3 layouts 布局之间的转场3.4 插入、删除、移动 sections 和 items3.5 更新…

解决解析maven依赖加载卡住问题

首先找到用户设置文件的位置&#xff1a; 根据位置查找文件&#xff0c;没有则创建。 修改maven的默认镜像为阿里云镜像。 <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/pub…

实训笔记9.4

实训笔记9.4 git一、本地版本控制1.1 建立仓库1.2 添加到暂存区1.3 提交到历史区1.4 查看1.4.1 查看当前版本库状态1.4.2 查看版本日志信息1.4.3 查看版本的变更历史 1.5 撤销1.5.1 撤销工作区的修改1.5.2 撤销暂存1.5.3 历史穿梭 二、代码托管2.1 将本地仓库推送到远程平台2.2…

【C++】STL-函数对象 + 谓词

1.函数对象使用 #include <iostream> using namespace std;//STL-函数对象&#xff08;仿函数&#xff09;class MyAdd { public:int operator()(int v1, int v2){return v1 v2;} }; //1、函数对象在使用时&#xff0c;可以像普通函数那用调用&#xff0c;可以有参数&am…

视频汇聚/视频云存储/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多路视频流&#…

vue 设置全局鼠标移动事件

要设置全局鼠标移动事件&#xff0c;可以使用 Vue 的 mixin 实现。在 mixin 中&#xff0c;我们可以使用 $on 方法监听 mousemove 事件&#xff0c;并在组件销毁时使用 $off 方法移除监听器&#xff0c;以避免内存泄漏。以下是一个例子&#xff1a; // 在全局中注册一个 mixin…

基于nRF52840 Dongle配合Wireshark对Mesh网络抓包并解析(Nordic)

Mesh网络抓包解析 准备说明配置过滤解密分析 准备 1&#xff09;nRF52840 Dongle 2&#xff09;Mesh节点 3&#xff09;手机作为配网器&#xff08;苹果手机安装nRF Mesh APP&#xff09; 说明 1&#xff09;节点使用的例程目录&#xff1a;nrf5sdkformeshv500src\examples\…