人工智能
直播中

王淑珍

7年用户 171经验值
私信 关注
[问答]

如何用def文件提高效率

后端PR工作中,常常需要做一些重复的工作或者对文件进行读写的操作。有时候会遇到一些比较麻烦的情况,利用简单的脚本或者人工去处理都会很耗费时间。这个时候,defIn/defOut的作用就出来了,借用def文件往往可以达到事半功倍的效果。下面就分享几个案例,体会一下def的妙处。








回帖(3)

李子月

2021-1-14 14:08:56
  案例1. 摆floorplan的迭代过程中使用def文件保留上一版的工作,方便微调。
  后端工作者都知道,目前的floorplan主要还是靠人工反复迭代来求得最优解,保留一些可以重复使用的数据,就能大大降低手工工作量。
  a. 保留core的大小形状:
  deselectAll
  defOut -selected core.def
  这样就能只保存core的形状而不包含其他信息,方便下次使用。
  b. 保留block ram的位置:
  deselectAll
  selectInst [dbGet [dbGet top.inists.cell.subClass block -p2].name]
  defOut -selected mem.def
  同样可以保留memory的位置,下次微调时候可以直接先吃进来,再做改动,减少重复动作。
  c. blockage, instance等都可以通过def的方式保留。
举报

马聪

2021-1-14 14:09:10
  案例2. powerPlan的时候需要对power net进行局部调整动作的也可以借助def
  a.需要手动画ring的时候,辛苦花过一次之后,还需要画同样的多层layer,这是就可以使用def的方式保存第一次的,然后修改def文件里的layer层,在defIn即可。
  b.同一版本的floorplan,后面需要局部改动power,但是已经run到postroute,也可以使用def保存新的powerplan,在删掉route的power,吃进def,再做verify,保证没有drc就OK。
  defOut、defIn只有记得verifyPowerVia,veriry_pg_short, verifyConnective等。
举报

李泓翔

2021-1-14 14:09:25
  案例3.需要比较两版enc data的instance的差异,也可以使用def
  需求描述:一版data做了opt或者eco的动作,变化了大量的instance,这时候需要debug一下变换了哪些instance,把不同的instance列出来。
  这个问题以前使用过方法:
  a.脚本去遍历来抓取不同,但是当instance超过一定的数量级就需要耗费大量的cpu资源和时间,甚至有hang住的风险;
  b.使用cat命令,抓取相同的部分,可以比较两版差异的百分比,但是较难找出不同部分;
  现在就可以借助def来完成这件事。
  第一步,def出数量少的那一版的instance来,叫做min.def;
  第二步,从def中列出instance list,每个前面加unplace Instance的命令;
  第三部,在数量多的那一版里source这个list,unplance掉相同的部分,然后在defOut出来剩下的instance,就可以得到差异的那部分的instance了
  大体思路就是这样,利用已有的东西def出来进行各种需求的解答,灵活的运用def的功能,可以大大节约工作时间。后面的工作中还可能遇见更多可以用def来提高效率的地方,遇见了再分享。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分