[零组件/半导体] 芯片中的standard cell

[复制链接]
查看15 | 回复0 | 昨天 00:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1.前言
我们在芯片验证的过程中,有时候也会遇到standard cell相关的问题,尤其是在后仿的时候,下面就简单介绍一些相关的知识。standard cell,翻译成中文是标准单元,或者简称cell,是数字芯片后端最基本的概念之一。我们为何要设定标准单元呢,以及这些cell是怎么应用到芯片的后端设计中的呢?
2.standard cell产生的背景
在芯片设计的早期阶段,门电路数量有限,晶体管需手工绘制于图纸之上,当时诞生的芯片逻辑简单,皆为全定制芯片,标准单元的概念尚未萌生。彼时,工程师们仅需将晶体管逐个摆放,电路即可稳定运行。然而,随着集成化程度的不断攀升,门电路数量呈爆发式增长,若仍采用手工绘制每个门电路的方式,无异于缘木求鱼。于是,一个简洁而实用的想法应运而生:将那些频繁使用的电路模块化,例如最基本的与或非门。当需要使用时,直接调用这些预先设计好的模块,如同复制粘贴般便捷。以一个二输入与门为例,一旦其电路设计完成、版图画就、各项参数提取完毕,便可在整个芯片设计中无数次复制使用。在此基础上,设计更进一步,将芯片中所有可重复利用的部分都进行模块化处理。为了便于这些模块的摆放与连线,制定了一系列规范化规则,比如规定每个模块具有固定高度,称为 row,宽度则以一个 CPP(接触多晶间距,Contacted Poly Pitch)的距离为单位进行变化,这个距离被称为 site,如此一来,标准单元便诞生了。

00441639a00d84.png
004421991a61af.png

3.standard cell在芯片中的作用
004424821db093.png
标准单元的出现极大地降低了设计的复杂性,其意义可类比为建筑楼房的砖块、构成生物体的细胞以及绘画创作的颜料。倘若对每一个逻辑门都要求后端设计从晶体管层面重新开始,那将是难以想象的浩大工程。目前,几乎所有的芯片都采用了这种设计方式。然而,事物总有两面性,标准单元不可避免地存在资源浪费的问题。由于每个单元都遵循统一的设计规则,无法针对某些细微之处进行专门优化。例如,在芯片的某个特定区域,将引脚设在单元左侧可能更有利于布线,但预先设计好的单元却将引脚置于右侧。不过,在大型设计项目中,类似这样的影响几乎可以忽略不计。
设计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搭积木啦。
4.LEF/standard cell/Placement
0044283bf7fb3d.png
0044340507fe09.png
后端在用的时候,这些cell就是一个一个的黑匣子,看不见内部,只能看到它的大小和出pin的信息。读入网表文件后,相应的cell就出现在我们的GUI界面了。对了,前端在综合的时候也需要读cell的lib。他们拿到的RTL代码不会指定一个与门要用哪种cell,比如我们目前有两种不同的与门cell,逻辑功能一样,但是有一些别的差异,综合工具就会全面考虑这一块电路,选用相应的cell作为那一段verilog代码里表示的与门。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

hdy

716

主题

347

回帖

807

积分

二级逆天

积分
807