在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1385|回复: 0

[原创] 检查lef与phantom一致性 基于laker tcl

[复制链接]
发表于 2023-8-1 15:36:25 | 显示全部楼层 |阅读模式

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

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

x
  分享一下关于自己写的检查lef 与 phantom 脚本的思路。由于公司服务器的原因没有办法将脚本上传出来。所以就介绍一下思路:
  首先要知道 lef 与 phantom,需要检查的地方,相似与calibre lvl的方式,就是将lef里面layer坐标,obs layer 去与 phantom 里的layer 作对比。
  但是这种lvl的作法没有办法检查逻辑的地方,简单的说就是lvl可以判断同样的地方有没有同样的metal,却无法判断这个metal是什么的port,这是所谓逻辑上的无法检查的地方。
  那么脚本思路介绍正式开始:
  首先lef作为输入文件,对lef文件的每一行进行一次处理:foreach line $lef { ... }

    1、第一个字符为MACRO时,得到cell的名字。开始进入判断PIN信息的模式。
       1.1、第一个字符为PIN时,得到port的名字。
       1.2、第一个字符为LAYER时,得到Layer的定义
       1.3、第一个字符为RECT时,得到上面Layer的坐标。
    2、第一个字符为OBS时。开始进入判断obs layer 信息的模式。

       2.1、第一个字符为LAYER时,得到Layer的定义
       2.2、第一个字符为RECT时,得到上面Layer的坐标。

    3、第一个字符文END时,输出对比结果到输出文件里。并初始化一些参数。

  上述为主题脚本。在这些过程中用到了一些别的procedure。
  1、首先在得到MACRO name 时,通过dbOpenLib、dbOpenCV,打开这个Cell。并抓取信息。在这里提一下phantom的构成,一般就是一些text,metal,metal port,还有一些block(例如m1bk,这类bk都是为了避免同样的layer接触到内部)。
  通过foreach cv [dbGet -obj $cv -attr Shapes ] ,并判断type   [dbGet -obj $cv -attr Type]
    当Type = Label时,这个cv就是phantom里的text。得到Text的信息,通过Text的 cv 得到Text的Point,得到Text的内容。通过text的layer得到对应metal的layer。
      通过[dbGetTrueOverlaps -cv . -layer . -bbox . -shapesOnly 1-attachPoint 1] 去抓取Text下面的metal。最后将这些数据保存在一个list中。
    当Type = Rectangle 时,就是抓取 phantom 中 和 lef OBS有关的地方了,也是抓取后将数据保存在一个list中。这个原理简单不作多介绍。
    2、由于最后信息对比我是用的 lsearch 命令,就意味着上面的list要与lef里的数字一模一样。但是我在运行过程中遇到了 lef里面的是 0.0 ,phantom 中坐标是 0的问题,同样的还有 lef 里面是 58,phantom中是 58.0 等,所以最后我添加了 一个数值处理的procedure。将所有数值都转换为小数点后保存三位。这样我对比是 lsearch 时就可以通过了。

最后,这是我平常没事的时候写的脚本,作为一个入行版图一年多的小白,思路也是比较粗浅。希望多多指教。有想法可以一起讨论。



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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 05:40 , Processed in 0.013257 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表