| ||
作为后端流程的最后一环,Calibre 的signoff 作用无可替代。以前使用的较少,现在以全栈工程师为目标,那么这一环必须打通。基于已有的几次tape out经验,回顾记录Calibre的常用操作,保证PV signoff可以顺利进行。
细节操作记录:
打开gds,<CMD>calibredrv **gds即可
打开gds之后,shift+F,可以显示版图的全部图层,方便debug
这时候每一层还只有层号,然后可以在菜单栏load进drc rule file,就会显示出每一层的名字,
右键等操作可以查看具体器件的属性。
Calibre主要用来检查DRC、LVS,ERC等。
DRC方面,基本原理就是吃进gds和drc rule进行比较的过程,最终输出drc报告和drc svdb,可以文本查看,也可以load进calibre查看。
有时候为了快速验证某一个或某几类drc是否修掉了,可以单独只跑这几种rule。可以在config文件里进行配置:
例如只check M1和M2的density:
DRC GROUP newdrc “M1.DEN* M2.DEN*”
DRC SELECT CHECK newdrc
或者直接 DRC SELECT CHECK “M1.DEN* M2.DEN*”
反之,暂时不想check哪些rule也可以 DRC UNSELECT CHECK
LVS方面,基本原理就是先把netlist转换成 spice文件,需要通过v2lvs命令转,吃进netlist和各个标准单元、IP,Memory,IO等的cdl文件,进行匹配转换,生成整个网表的spice文件。然后run lvs,吃进gds,spice,lvs rule,hcell list,过程中工具会先把gds也装成spice文件,和netlist转成的spice文件进行比较,从而生成lvs报告,svdb。
LVS要pass,基本流程,一个保证没用short。如果有short会产生很多无法确定的问题。如果有short,lvs也会生成一个后缀.short的报告出来。可以load进Innovus等PR工具查看,trace这个short问题。
没用short之后,就是去对齐各种port,net,instance是否对等了。常用的几个切入点有:
就是看lvs报告中INCORRECT的detail信息去推测
检查global net connect是否定义好了
出网表的时候是否包含了pg信息,cap filler,IO等
检查网表里是否有1'b0 1'b1等语法
检查PR design里是否有open,可以verifyConnectivity去检查
检查cdl和gds里是否有不同类型的括号,比如gds里是<>,cdl里是[].尖括号通常出现在模拟的gds里,要么请模拟的同事把尖括号改掉,要么可以通过命令去转化
可以先blackbox掉一IP或者某个不确定的memory,排除法
实践出真知,目前跑的PV项目就几个ddr和wifi片子,问题较多可以积累经验。之前跑的通常的cpu等block基本都是一把过,没太多挑战,自然有效经验也就少了。慢慢沉淀,终有一天会成为优秀的全栈工程师。
共勉。