数字后端知识点扫盲——标准单元-standard cell

数字后端知识点扫盲——标准单元-standard cell_第1张图片

Standard cell,标准单元,或者简称cell,可以说是数字后端最基本的概念之一了。

甚至可能没有接触过后端的同学也有所耳闻,那么它到底是什么呢?我们为何要设定标准单元呢,以及这些cell是怎么应用到我们后端的设计中的呢?我就来以我个人的理解阐述一下这几个问题。

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

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

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

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

         我是一个前端设计人员,文章只是以科普的形式介绍后端的一些知识,在实际工作中也会涉及到这些知识点,所以转载学习,文中如有不正确的地方,希望后端的前辈斧正。

你可能感兴趣的:(数字IC,数字IC后端)